From cd7137ee52fba86c59c008b918ba72482fce509b Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:01:50 +0100 Subject: [PATCH 001/391] Deploy fastapiserver, remove deal and databases --- .github/workflows/test_fastapi_server.yml | 50 +- .pre-commit-config.yaml | 11 +- burny_common/path_manipulation.py | 4 +- fastapi_server/README.md | 15 - fastapi_server/helper/database.py | 31 - fastapi_server/helper/helper.py | 38 - fastapi_server/helper/mail.py | 27 - fastapi_server/main.py | 52 +- fastapi_server/migrations/README | 3 - fastapi_server/migrations/env.py | 77 -- fastapi_server/migrations/script.py.mako | 25 - .../versions/0001_initial_migration.py | 49 -- fastapi_server/models/__init__.py | 0 fastapi_server/models/chatmessage.py | 13 - fastapi_server/models/todoitem.py | 11 - fastapi_server/models/user.py | 15 - fastapi_server/poetry.lock | 500 +++++++++++++ fastapi_server/pyproject.toml | 26 + fastapi_server/routes/todolist.py | 92 ++- fastapi_server/systemd/fastapiserver.service | 11 + fastapi_server/test/base_test.py | 116 +-- .../test/endpoints_test/test_todolist.py | 79 ++- fastapi_server/test/test_database.py | 50 -- fastapi_server/test/test_helper.py | 47 -- poetry.lock | 660 ++++++------------ pyproject.toml | 5 - .../examples/other/multiprocessing_example.py | 12 - .../other/test_multiprocessing_example.py | 13 +- python_examples/examples/other/zip_unzip.py | 10 +- supabase_stream_scripts/package.json | 2 +- .../src/functions/constants.ts | 1 + .../src/pages/About.svelte | 3 +- .../src/pages/MatchInfo.svelte | 11 +- .../src/pages/StreamManager.svelte | 279 ++++---- 34 files changed, 1107 insertions(+), 1231 deletions(-) delete mode 100644 fastapi_server/helper/database.py delete mode 100644 fastapi_server/helper/helper.py delete mode 100644 fastapi_server/helper/mail.py delete mode 100644 fastapi_server/migrations/README delete mode 100644 fastapi_server/migrations/env.py delete mode 100644 fastapi_server/migrations/script.py.mako delete mode 100644 fastapi_server/migrations/versions/0001_initial_migration.py delete mode 100644 fastapi_server/models/__init__.py delete mode 100644 fastapi_server/models/chatmessage.py delete mode 100644 fastapi_server/models/todoitem.py delete mode 100644 fastapi_server/models/user.py create mode 100644 fastapi_server/poetry.lock create mode 100644 fastapi_server/pyproject.toml create mode 100644 fastapi_server/systemd/fastapiserver.service delete mode 100644 fastapi_server/test/test_database.py delete mode 100644 fastapi_server/test/test_helper.py diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 0b135210..06c49596 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -6,7 +6,6 @@ on: paths: - burny_common/** - fastapi_server/** - - poetry.lock - .github/workflows/test_fastapi_server.yml pull_request: branches: @@ -17,7 +16,6 @@ jobs: test_backend: env: SUBDIRECTORY: fastapi_server - DATABASE_PATH: sqlite:///data/sqlmodel.db strategy: fail-fast: false matrix: @@ -41,12 +39,14 @@ jobs: - name: Install Python dependencies run: | + cd ${{ env.SUBDIRECTORY }} python -m pip install poetry poetry install - name: Run Python tests run: | - poetry run pytest ${{ env.SUBDIRECTORY }} + cd ${{ env.SUBDIRECTORY }} + poetry run pytest deploy_backend: strategy: @@ -54,12 +54,50 @@ jobs: os: [ubuntu-latest] runs-on: ${{ matrix.os }} needs: [test_backend] + env: + USERNAME: fastapiserver + if: github.ref == 'refs/heads/develop' steps: - uses: actions/checkout@v2 - name: Deploy backend - if: github.ref == 'refs/heads/master' run: | - rm -rf data - # TODO Stop/disable service, upload to server, update poetry packages, start/enable service + rm -rf fastapi_server/data + + - name: Stop services + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + script: | + sudo /bin/systemctl disable --now ${{ env.USERNAME }} + + - name: Update server files + uses: appleboy/scp-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + source: . + target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} + + - name: Update dependencies and .service file then re-enable service + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + script: | + cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}/fastapiserver" + poetry install --no-dev + cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.SERVICENAME }}.service" "/etc/systemd/system/${{ env.SERVICENAME }}.service" + sudo /bin/systemctl daemon-reload + sudo /bin/systemctl enable --now ${{ env.SERVICENAME }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4bf90426..74d8bf0c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -107,13 +107,20 @@ repos: - repo: local hooks: - - id: format_svelte - name: format_svelte + - id: format_svelte_frontend + name: format_svelte_frontend stages: [commit] language: system entry: bash -c "cd svelte_frontend && npm run format" pass_filenames: false + - id: supabase_stream_scripts + name: supabase_stream_scripts + stages: [commit] + language: system + entry: bash -c "cd supabase_stream_scripts && npm run format" + pass_filenames: false + - id: pylint name: pylint stages: [commit] diff --git a/burny_common/path_manipulation.py b/burny_common/path_manipulation.py index 7dc442a3..709b937a 100644 --- a/burny_common/path_manipulation.py +++ b/burny_common/path_manipulation.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Iterator, Iterable +from typing import Iterable def convert_string_to_path(multi_line_string: str) -> Iterable[Path]: @@ -11,7 +11,7 @@ def convert_string_to_path(multi_line_string: str) -> Iterable[Path]: to an iterator of Path """ - for line in multi_line_string.strip().split("\n"): + for line in multi_line_string.strip().split('\n'): yield Path(line) diff --git a/fastapi_server/README.md b/fastapi_server/README.md index e315a7bb..cf04385d 100644 --- a/fastapi_server/README.md +++ b/fastapi_server/README.md @@ -6,18 +6,3 @@ poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 --reload ``` Now you can go to `http://0.0.0.0:8000` or `http://0.0.0.0:8000/docs` to check out the documentation to all endpoints - -## Migrations - -[How to start with alembic](https://github.com/tiangolo/sqlmodel/issues/85#issuecomment-917228849) - -When changing models, you should run migrations. - -To run migrations: - -``` -poetry run alembic revision --autogenerate -m "Initial Migration" -poetry run alembic upgrade head -``` - - diff --git a/fastapi_server/helper/database.py b/fastapi_server/helper/database.py deleted file mode 100644 index f0e7d984..00000000 --- a/fastapi_server/helper/database.py +++ /dev/null @@ -1,31 +0,0 @@ -import os -from pathlib import Path - -from dotenv import load_dotenv -from loguru import logger -from sqlmodel import Session, SQLModel, create_engine - -load_dotenv() - -ROOT_FASTAPI_SERVER_PATH = Path(__file__).parents[1] -DATABASE_PATH = os.environ.get('DATABASE_PATH') -DATABASE_USE_MEMORY = os.environ.get('DATABASE_USE_MEMORY') -if DATABASE_PATH == ':memory:' or DATABASE_USE_MEMORY == 'TRUE': - logger.info('Using memory database!') - engine = create_engine('sqlite:///:memory:') -else: - assert DATABASE_PATH is not None - correct_path = ROOT_FASTAPI_SERVER_PATH / DATABASE_PATH - # engine = create_engine('sqlite:///temp.db') - # engine = create_engine('sqlite:///:memory:') - logger.info(f'DB Path: {correct_path}') - engine = create_engine(f'sqlite:///{correct_path.absolute().__str__()}') - - -def init_db(): - SQLModel.metadata.create_all(engine) - - -def get_session() -> Session: - with Session(engine) as session: - return session diff --git a/fastapi_server/helper/helper.py b/fastapi_server/helper/helper.py deleted file mode 100644 index 11167df4..00000000 --- a/fastapi_server/helper/helper.py +++ /dev/null @@ -1,38 +0,0 @@ -import hashlib -import os - -import jwt -from dotenv import load_dotenv -from loguru import logger - -load_dotenv() - -if os.environ.get('JWT_ENCODE_SECRET', ''): - logger.warning('ENV JWT_ENCODE_SECRET is not set') -SECRET = os.environ.get('JWT_ENCODE_SECRET', 'secret') - -if len(os.environ.get('PASSWORD_HASH_SALT', '')) != 32: - logger.warning('ENV PASSWORD_HASH_SALT is not set') -SALT: bytes = os.environ.get('PASSWORD_HASH_SALT', 'abcdefghijklmnopqrstuvwxyzABCDEF').encode() - - -def jwt_encode(data: dict, secret: str = SECRET) -> str: - return jwt.encode(data, secret, algorithm='HS256') - - -def jwt_decode(token: str, secret: str = SECRET) -> dict: - return jwt.decode(token, secret, algorithms=['HS256']) - - -def hash_password(password_plain: str, salt: bytes = SALT) -> str: - return hashlib.pbkdf2_hmac('sha256', password_plain.encode(), salt=salt, iterations=10_000).hex() - - -if __name__ == '__main__': - data = {'bla': 'blubb'} - token_example = jwt_encode(data) - logger.info(f'{token_example=}') - data_decoded = jwt_decode(token_example) - logger.info(f'{data_decoded=}') - - logger.info(f'{hash_password("mypassword")=}') diff --git a/fastapi_server/helper/mail.py b/fastapi_server/helper/mail.py deleted file mode 100644 index 96277d74..00000000 --- a/fastapi_server/helper/mail.py +++ /dev/null @@ -1,27 +0,0 @@ -import os -from typing import List - -from dotenv import load_dotenv -from loguru import logger -from sendgrid import SendGridAPIClient -from sendgrid.helpers.mail import Mail - -load_dotenv() - - -def send_mail(target_emails: List[str], subject: str, body: str): - assert os.environ.get('EMAIL_SENDER_ADDRESS', None) is not None, 'Env EMAIL_SENDER_ADDRESS is not set' - assert os.environ.get('EMAIL_API_KEY', None) is not None, 'Env EMAIL_API_KEY is not set' - # TODO be able to add attachments, and how to do it - message = Mail( - from_email=os.environ.get('EMAIL_SENDER_ADDRESS'), to_emails=target_emails, subject=subject, html_content=body - ) - sg = SendGridAPIClient(os.environ.get('EMAIL_API_KEY')) - response = sg.send(message) - logger.info(response.status_code) - logger.info(response.body) - logger.info(response.headers) - - -if __name__ == '__main__': - send_mail(['gamingburny@gmail.com'], 'some test subject', 'some test body with python!') diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 4131e78e..4f271888 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -1,11 +1,11 @@ +from pathlib import Path + import uvicorn +from dotenv import dotenv_values from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from loguru import logger -from fastapi_server.helper.database import get_session, init_db -from fastapi_server.helper.helper import hash_password -from fastapi_server.models.user import User from fastapi_server.routes.chat import chat_router from fastapi_server.routes.hello_world import hello_world_router from fastapi_server.routes.todolist import todo_list_router @@ -15,9 +15,18 @@ app.include_router(chat_router) app.include_router(todo_list_router) -origins = [ - 'https://burnysc2.github.io', -] + [f'http://localhost:{i}' for i in range(1, 2**16)] +env_path = Path(__file__).parent / '.env' +if not env_path.is_file(): + logger.info( + """Local .env file in "fastapi_server" directory does not exist. For local development please fill it with contents: +STAGE=dev""" + ) + +config: dict = dotenv_values('.env') + +origins = ['https://burnysc2.github.io'] +if config.get('STAGE', '') == 'dev': + origins += [f'http://localhost:{i}' for i in range(1, 2**16)] app.add_middleware( CORSMiddleware, @@ -31,37 +40,6 @@ @app.on_event('startup') async def startup_event(): # asyncio.create_task(background_task_function('hello', other_text=' world!')) - # TODO: This init_db should probably not be in here, use alembic instead - init_db() - session = get_session() - # Add admin user - user = session.exec(session.query(User).where(User.username == 'admin')).first() - if not user: - session.add( - User( - username='admin', - email='admin', - password_hashed=hash_password('admin'), - is_admin=True, - is_disabled=False, - is_verified=True, - ) - ) - session.commit() - # Add normal user - user = session.exec(session.query(User).where(User.username == 'user')).first() - if not user: - session.add( - User( - username='user', - email='user', - password_hashed=hash_password('user'), - is_admin=False, - is_disabled=False, - is_verified=True, - ) - ) - session.commit() logger.info('Hello world!') diff --git a/fastapi_server/migrations/README b/fastapi_server/migrations/README deleted file mode 100644 index 3b953722..00000000 --- a/fastapi_server/migrations/README +++ /dev/null @@ -1,3 +0,0 @@ -Generic single-database configuration. - -[See this comment](https://github.com/tiangolo/sqlmodel/issues/85#issuecomment-917228849) diff --git a/fastapi_server/migrations/env.py b/fastapi_server/migrations/env.py deleted file mode 100644 index 0499c6f7..00000000 --- a/fastapi_server/migrations/env.py +++ /dev/null @@ -1,77 +0,0 @@ -from logging.config import fileConfig - -from alembic import context -from sqlalchemy import engine_from_config, pool -from sqlmodel import SQLModel - -# 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. -fileConfig(config.config_file_name) # type: ignore - -# add your model's MetaData object here - -# Define models here, assign them to a value so it doesn't get auto-removed on unused import -from fastapi_server.models.user import User - -_User = User - -target_metadata = SQLModel.metadata - -# 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(): - """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(): - """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/fastapi_server/migrations/script.py.mako b/fastapi_server/migrations/script.py.mako deleted file mode 100644 index e45068fc..00000000 --- a/fastapi_server/migrations/script.py.mako +++ /dev/null @@ -1,25 +0,0 @@ -"""${message} - -Revision ID: ${up_revision} -Revises: ${down_revision | comma,n} -Create Date: ${create_date} - -""" -from alembic import op -import sqlalchemy as sa -import sqlmodel -${imports if imports else ""} - -# revision identifiers, used by Alembic. -revision = ${repr(up_revision)} -down_revision = ${repr(down_revision)} -branch_labels = ${repr(branch_labels)} -depends_on = ${repr(depends_on)} - - -def upgrade(): - ${upgrades if upgrades else "pass"} - - -def downgrade(): - ${downgrades if downgrades else "pass"} diff --git a/fastapi_server/migrations/versions/0001_initial_migration.py b/fastapi_server/migrations/versions/0001_initial_migration.py deleted file mode 100644 index 6f15f396..00000000 --- a/fastapi_server/migrations/versions/0001_initial_migration.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Initial Migration3 - -Revision ID: 849d12c13c8a -Revises: -Create Date: 2021-12-19 17:06:36.345137 - -""" -import sqlalchemy as sa -import sqlmodel -from alembic import op - -# revision identifiers, used by Alembic. -revision = '849d12c13c8a' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table( - 'user', sa.Column('id', sa.Integer(), nullable=True), - sa.Column('username', sqlmodel.sql.sqltypes.AutoString(), nullable=False), - sa.Column('email', sqlmodel.sql.sqltypes.AutoString(), nullable=False), - sa.Column('password_hashed', sqlmodel.sql.sqltypes.AutoString(), nullable=False), - sa.Column('is_admin', sa.Boolean(), nullable=False), sa.Column('is_disabled', sa.Boolean(), nullable=False), - sa.Column('is_verified', sa.Boolean(), nullable=False), sa.PrimaryKeyConstraint('id', 'username', 'email') - ) - op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=False) - op.create_index(op.f('ix_user_id'), 'user', ['id'], unique=False) - op.create_index(op.f('ix_user_is_admin'), 'user', ['is_admin'], unique=False) - op.create_index(op.f('ix_user_is_disabled'), 'user', ['is_disabled'], unique=False) - op.create_index(op.f('ix_user_is_verified'), 'user', ['is_verified'], unique=False) - op.create_index(op.f('ix_user_password_hashed'), 'user', ['password_hashed'], unique=False) - op.create_index(op.f('ix_user_username'), 'user', ['username'], unique=False) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_user_username'), table_name='user') - op.drop_index(op.f('ix_user_password_hashed'), table_name='user') - op.drop_index(op.f('ix_user_is_verified'), table_name='user') - op.drop_index(op.f('ix_user_is_disabled'), table_name='user') - op.drop_index(op.f('ix_user_is_admin'), table_name='user') - op.drop_index(op.f('ix_user_id'), table_name='user') - op.drop_index(op.f('ix_user_email'), table_name='user') - op.drop_table('user') - # ### end Alembic commands ### diff --git a/fastapi_server/models/__init__.py b/fastapi_server/models/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/fastapi_server/models/chatmessage.py b/fastapi_server/models/chatmessage.py deleted file mode 100644 index e50199ec..00000000 --- a/fastapi_server/models/chatmessage.py +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Optional - -from sqlmodel import Field, SQLModel - -from fastapi_server.models.user import User - - -class ChatMessage(SQLModel, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - timestamp: int - message: str - user_id: int = Field(foreign_key='user.id') - user: User diff --git a/fastapi_server/models/todoitem.py b/fastapi_server/models/todoitem.py deleted file mode 100644 index 712c473c..00000000 --- a/fastapi_server/models/todoitem.py +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Optional - -from sqlmodel import Field, SQLModel - - -class TodoItem(SQLModel, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - todo_text: str - created_timestamp: int - done: bool = False - done_timestamp: int = -1 diff --git a/fastapi_server/models/user.py b/fastapi_server/models/user.py deleted file mode 100644 index f9545ff6..00000000 --- a/fastapi_server/models/user.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Optional - -from sqlmodel import Field, SQLModel - - -class User(SQLModel, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - username: str - # Why cant i use pydantic EmailStr here? - email: str - password_hashed: str - is_admin: bool - is_disabled: bool - is_verified: bool - # chat_messages: List["ChatMessage"] = Relationship(back_populates="user") diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock new file mode 100644 index 00000000..f8d1a3b7 --- /dev/null +++ b/fastapi_server/poetry.lock @@ -0,0 +1,500 @@ +[[package]] +name = "anyio" +version = "3.5.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] + +[[package]] +name = "asgiref" +version = "3.5.0" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "click" +version = "8.0.4" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "dataclasses-json" +version = "0.5.6" +description = "Easily serialize dataclasses to and from JSON" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +marshmallow = ">=3.3.0,<4.0.0" +marshmallow-enum = ">=1.5.1,<2.0.0" +typing-inspect = ">=0.4.0" + +[package.extras] +dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] + +[[package]] +name = "fastapi" +version = "0.70.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +starlette = "0.16.0" + +[package.extras] +all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] + +[[package]] +name = "h11" +version = "0.13.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "loguru" +version = "0.5.3" +description = "Python logging made (stupidly) simple" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"] + +[[package]] +name = "marshmallow" +version = "3.14.1" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.3.0)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.7)"] +lint = ["mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)"] +tests = ["pytest", "pytz", "simplejson"] + +[[package]] +name = "marshmallow-enum" +version = "1.5.1" +description = "Enum field for Marshmallow" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +marshmallow = ">=2.0.0" + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pydantic" +version = "1.9.0" +description = "Data validation and settings management using python 3.6 type hinting" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +typing-extensions = ">=3.7.4.3" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pyparsing" +version = "3.0.7" +description = "Python parsing module" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "6.2.5" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +toml = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.16.0" +description = "Pytest support for asyncio." +category = "dev" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +pytest = ">=5.4.0" + +[package.extras] +testing = ["coverage", "hypothesis (>=5.7.1)"] + +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "starlette" +version = "0.16.0" +description = "The little ASGI library that shines." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +anyio = ">=3.0.0,<4" + +[package.extras] +full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-inspect" +version = "0.7.1" +description = "Runtime inspection utilities for typing module." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "uvicorn" +version = "0.16.0" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +asgiref = ">=3.4.0" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "websockets (>=9.1)", "websockets (>=10.0)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] + +[metadata] +lock-version = "1.1" +python-versions = ">=3.8 <3.11" +content-hash = "ee192a973a967b7110d33679f6bf84d0ea1d5aba1a4b35dec0d378b94a4970bb" + +[metadata.files] +anyio = [ + {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, + {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, +] +asgiref = [ + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +click = [ + {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, + {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +dataclasses-json = [ + {file = "dataclasses-json-0.5.6.tar.gz", hash = "sha256:1f60be3405dee30b86ffbf6a436db8ba5efaeeb676bfda358e516a97aa7dfce4"}, + {file = "dataclasses_json-0.5.6-py3-none-any.whl", hash = "sha256:1d7f3a284a49d350ddbabde0e7d0c5ffa34a144aaf1bcb5b9f2c87673ff0c76e"}, +] +fastapi = [ + {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, + {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, +] +h11 = [ + {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, + {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +loguru = [ + {file = "loguru-0.5.3-py3-none-any.whl", hash = "sha256:f8087ac396b5ee5f67c963b495d615ebbceac2796379599820e324419d53667c"}, + {file = "loguru-0.5.3.tar.gz", hash = "sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"}, +] +marshmallow = [ + {file = "marshmallow-3.14.1-py3-none-any.whl", hash = "sha256:04438610bc6dadbdddb22a4a55bcc7f6f8099e69580b2e67f5a681933a1f4400"}, + {file = "marshmallow-3.14.1.tar.gz", hash = "sha256:4c05c1684e0e97fe779c62b91878f173b937fe097b356cd82f793464f5bc6138"}, +] +marshmallow-enum = [ + {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, + {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pydantic = [ + {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, + {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, + {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, + {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, + {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, + {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, + {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, + {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, + {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, + {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, + {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, +] +pyparsing = [ + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +] +pytest = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, + {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, +] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] +starlette = [ + {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, + {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +typing-extensions = [ + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, +] +typing-inspect = [ + {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, + {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, + {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, +] +uvicorn = [ + {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, + {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, +] +win32-setctime = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml new file mode 100644 index 00000000..df6df2ae --- /dev/null +++ b/fastapi_server/pyproject.toml @@ -0,0 +1,26 @@ +[tool.poetry] +name = "fastapi_server" +version = "0.1.0" +description = "" +authors = ["BurnySc2 "] + +[tool.poetry.dependencies] +python = ">=3.8 <3.11" +# Write and read classes to/from json +dataclasses-json = "^0.5" +# Fastapi server +fastapi = "^0.70" +uvicorn = "^0.16" +# Simple logger +loguru = "^0.5" +# Somehow required +colorama = "^0.4.4" + +[tool.poetry.dev-dependencies] +# Test library +pytest = "^6.2" +pytest-asyncio = "^0.16" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/fastapi_server/routes/todolist.py b/fastapi_server/routes/todolist.py index be048f7c..16e3c304 100644 --- a/fastapi_server/routes/todolist.py +++ b/fastapi_server/routes/todolist.py @@ -1,49 +1,73 @@ import time from dataclasses import dataclass -from typing import Dict, List, Union +from typing import List -from fastapi import Depends, Request +from fastapi import Request from fastapi.routing import APIRouter from loguru import logger -from sqlalchemy.sql import Delete -from sqlmodel import Session, delete, select - -from fastapi_server.helper.database import get_session -from fastapi_server.models.todoitem import TodoItem todo_list_router = APIRouter() +@dataclass +class TodoItem: + id: int + todo_text: str + created_timestamp: float + done_timestamp: float + done: bool + + +TODO_COUNTER = 0 +TODOS: List[TodoItem] = [] + + @todo_list_router.get('/api') -async def show_all_todos(session: Session = Depends(get_session)) -> List[Dict[str, Union[int, str]]]: - items = session.exec(select(TodoItem)).all() - logger.info([{key: value for key, value in item.__dict__.items() if not key.startswith('_')} for item in items]) - return [{key: value for key, value in item.__dict__.items() if not key.startswith('_')} for item in items] +async def show_all_todos() -> List[TodoItem]: + # pylint: disable=W0602 + return TODOS @todo_list_router.post('/api/{todo_description}') -async def create_new_todo(todo_description: str, session: Session = Depends(get_session)): +async def create_new_todo(todo_description: str): # https://fastapi.tiangolo.com/advanced/using-request-directly/ - if todo_description: - logger.info(f'Attempting to insert new todo: {todo_description}') - session.add(TodoItem(todo_text=todo_description, created_timestamp=int(time.time()))) - session.commit() + # pylint: disable=W0602 + global TODOS, TODO_COUNTER + TODO_COUNTER += 1 + TODOS.append( + TodoItem( + id=TODO_COUNTER, + todo_text=todo_description, + created_timestamp=time.time(), + done_timestamp=-1, + done=False, + ) + ) # Alternative to above with request body: @todo_list_router.post('/api_body') -async def create_new_todo2(request: Request, session: Session = Depends(get_session)): +async def create_new_todo2(request: Request): """ Example with accessing request body. Send a request with body {"new_todo": ""} """ # https://fastapi.tiangolo.com/advanced/using-request-directly/ + # pylint: disable=W0602 + global TODOS, TODO_COUNTER request_body = await request.json() todo_item = request_body.get('new_todo', None) if todo_item: - logger.info(f'Attempting to insert new todo: {todo_item}') - session.add(TodoItem(todo_text=todo_item, created_timestamp=int(time.time()))) - session.commit() + TODO_COUNTER += 1 + TODOS.append( + TodoItem( + id=TODO_COUNTER, + todo_text=todo_item, + created_timestamp=time.time(), + done_timestamp=-1, + done=False, + ) + ) @dataclass() @@ -53,24 +77,34 @@ class Item: # Alternative to above with model: @todo_list_router.post('/api_model') -async def create_new_todo3(item: Item, session: Session = Depends(get_session)): +async def create_new_todo3(item: Item): """ Example with accessing request body. Send a request with body {"todo_description": ""} """ # https://fastapi.tiangolo.com/tutorial/body/#import-pydantics-basemodel + # pylint: disable=W0602 + global TODOS, TODO_COUNTER logger.info(f'Received item: {item}') if item and item.todo_description: - logger.info(f'Attempting to insert new todo: {item.todo_description}') - session.add(TodoItem(todo_text=item.todo_description, created_timestamp=int(time.time()))) - session.commit() + TODO_COUNTER += 1 + TODOS.append( + TodoItem( + id=TODO_COUNTER, + todo_text=item.todo_description, + created_timestamp=time.time(), + done_timestamp=-1, + done=False, + ) + ) @todo_list_router.delete('/api/{todo_id}') -async def remove_todo(todo_id: int, session: Session = Depends(get_session)) -> bool: +async def remove_todo(todo_id: int) -> bool: """ Example of using /api/itemid with DELETE request """ + global TODOS logger.info(f'Attempting to remove todo id: {todo_id}') - statement: Delete = delete(TodoItem).where(TodoItem.id == todo_id) # type: ignore - result = session.exec(statement) # type: ignore - session.commit() - return result.rowcount == 1 + count_before = len(TODOS) + TODOS = [item for item in TODOS if item.id != todo_id] + count_after = len(TODOS) + return count_after - count_before == 1 diff --git a/fastapi_server/systemd/fastapiserver.service b/fastapi_server/systemd/fastapiserver.service new file mode 100644 index 00000000..98ea906d --- /dev/null +++ b/fastapi_server/systemd/fastapiserver.service @@ -0,0 +1,11 @@ +[Service] +ExecStart=/usr/local/bin/poetry poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 +Restart=always +RestartSec=20 +SyslogIdentifier=fastapiserver +User=fastapiserver +Group=fastapiserver +WorkingDirectory=/home/fastapiserver/fastapiserver/ + +[Install] +WantedBy=multi-user.target diff --git a/fastapi_server/test/base_test.py b/fastapi_server/test/base_test.py index 0c2de802..76d6b2e0 100644 --- a/fastapi_server/test/base_test.py +++ b/fastapi_server/test/base_test.py @@ -1,141 +1,31 @@ import contextlib -import os -import pathlib import pytest -from sqlalchemy.pool import StaticPool -from sqlmodel import Session, SQLModel, create_engine from starlette.testclient import TestClient -from fastapi_server.helper.database import get_session from fastapi_server.main import app -TEST_DB_FILE_PATH = 'test.db' -TEST_DB_URL = f'sqlite:///{TEST_DB_FILE_PATH}' -TEST_DB_MEMORY_PATH = ':memory:' -TEST_DB_MEMORY_URL = f'sqlite:///{TEST_DB_MEMORY_PATH}' - class BaseTest: method_client: TestClient = None # type: ignore - method_session: Session = None # type: ignore - example_client: TestClient = None # type: ignore - example_session: Session = None # type: ignore def setup_method(self, _method): - BaseTest.method_session = BaseTest.create_memory_sesssion() - # BaseTest.method_session = BaseTest.create_file_sesssion() BaseTest.method_client = TestClient(app) - BaseTest.method_client.app.dependency_overrides[get_session] = BaseTest.method_get_session def teardown_method(self, _method): - if BaseTest.method_session is not None: - db_path = pathlib.Path(TEST_DB_FILE_PATH) - # Remove file if it wasnt a memory database - if BaseTest.method_session.bind.url.database != TEST_DB_MEMORY_PATH and db_path.is_file(): - os.remove(db_path) - BaseTest.method_session.close() - BaseTest.method_session = None - app.dependency_overrides.clear() BaseTest.method_client = None - @classmethod - def create_file_sesssion(cls): - engine = create_engine(TEST_DB_URL, connect_args={'check_same_thread': False}, poolclass=StaticPool) - SQLModel.metadata.create_all(engine) - with Session(engine, autoflush=False, autocommit=False) as session: - return session - - @classmethod - def create_memory_sesssion(cls): - engine = create_engine(TEST_DB_MEMORY_URL, connect_args={'check_same_thread': False}, poolclass=StaticPool) - SQLModel.metadata.create_all(engine) - with Session(engine, autoflush=False, autocommit=False) as session: - # Can this be "yield" instead? - return session - - @classmethod - @contextlib.contextmanager - def example_session_context(cls): - """ - Used together with hypothesis: create a class-variable to be used in hypothesis. Unset once the test is over. - Session strategy doesn't seem to work as expected, nor does setup example and teardown example with sql. - """ - assert not isinstance(cls.example_session, Session) - try: - # cls.example_session = cls.create_file_sesssion() - cls.example_session = cls.create_memory_sesssion() - yield cls.example_session - finally: - if cls.example_session is not None: - db_path = pathlib.Path(TEST_DB_FILE_PATH) - # Remove file if it wasnt a memory database - if cls.example_session.bind.url.database != TEST_DB_MEMORY_PATH and db_path.is_file(): - os.remove(db_path) - cls.example_session.close() - cls.example_session = None - @classmethod @contextlib.contextmanager def method_client_context(cls): - """ Same reasoning as above. """ - # See https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/#pytest-fixtures - # app.dependency_overrides.clear() - app.dependency_overrides[get_session] = cls.method_get_session - cls.method_client = TestClient(app) + client = TestClient(app) try: - yield cls.method_client + yield client finally: - cls.method_client = None - app.dependency_overrides.clear() - - @classmethod - @contextlib.contextmanager - def example_client_context(cls): - """ Same reasoning as above. """ - # See https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/#pytest-fixtures - with cls.example_session_context() as _session: - app.dependency_overrides[get_session] = cls.example_get_session - cls.example_client = TestClient(app) - try: - yield cls.example_client - finally: - cls.example_client = None - app.dependency_overrides.clear() - - @classmethod - def method_get_session(cls) -> Session: # type: ignore - assert isinstance(cls.method_session, Session) - assert cls.method_session.bind.url.database in {TEST_DB_FILE_PATH, TEST_DB_MEMORY_PATH} # type: ignore - yield cls.method_session - - @classmethod - def example_get_session(cls) -> Session: # type: ignore - assert isinstance(cls.example_session, Session) - assert cls.example_session.bind.url.database in {TEST_DB_FILE_PATH, TEST_DB_MEMORY_PATH} # type: ignore - yield cls.example_session - - @classmethod - def example_get_client(cls) -> TestClient: # type: ignore - yield cls.example_client + cls.example_client = None @pytest.fixture(name='method_client_fixture') def method_client_fixture(self) -> TestClient: # type: ignore with BaseTest.method_client_context() as client: assert isinstance(client, TestClient) yield client - - @pytest.fixture(name='example_client_fixture') - def example_client_fixture(self) -> TestClient: # type: ignore - assert isinstance(BaseTest.example_client, TestClient) - yield self.example_client - - @pytest.fixture(name='method_session_fixture') - def method_session_fixture(self) -> Session: # type: ignore - assert isinstance(BaseTest.method_session, Session) - yield BaseTest.method_session - - @pytest.fixture(name='example_session_fixture') - def example_session_fixture(self) -> Session: # type: ignore - assert isinstance(BaseTest.example_session, Session) - yield BaseTest.example_session diff --git a/fastapi_server/test/endpoints_test/test_todolist.py b/fastapi_server/test/endpoints_test/test_todolist.py index 86acb410..c4d0ec0b 100644 --- a/fastapi_server/test/endpoints_test/test_todolist.py +++ b/fastapi_server/test/endpoints_test/test_todolist.py @@ -14,46 +14,46 @@ class TestTodolist(BaseTest): def test_add_todo_list_item_single(self): - new_todo = 'new todo text' - with self.example_client_context() as client: - response = client.get('/api') - assert response.status_code == 200 - count_before = len(response.json()) + for i in range(2): + with self.method_client_context() as client: + new_todo = f'new todo text {i}' + response = client.get('/api') + assert response.status_code == 200 + count_before = len(response.json()) - response = client.post(f'/api/{new_todo}') - assert response.status_code == 200 + response = client.post(f'/api/{new_todo}') + assert response.status_code == 200 - response = client.get('/api') - assert response.status_code == 200 - count_after = len(response.json()) - json_data = response.json()[-1] - json_data.pop('created_timestamp') - assert json_data == { - 'id': 1, - 'todo_text': new_todo, - 'done_timestamp': -1, - 'done': False, - } - assert count_after - count_before == 1 + response = client.get('/api') + assert response.status_code == 200 + count_after = len(response.json()) + json_data = response.json()[-1] + json_data.pop('created_timestamp') + json_data.pop('id') + assert json_data == { + 'todo_text': new_todo, + 'done_timestamp': -1.0, + 'done': False, + } + assert count_after - count_before == 1 @settings(max_examples=20, deadline=2_000) @given(data=st.data()) def test_add_todo_list_item(self, data: DataObject): new_todo = data.draw(st.from_regex(TODO_ITEM_REGEX, fullmatch=True)) - with self.example_client_context() as client: + with self.method_client_context() as client: response = client.get('/api') assert response.status_code == 200 - assert response.json() == [] response = client.post(f'/api/{new_todo}') assert response.status_code == 200 response = client.get('/api') assert response.status_code == 200 - json_data = response.json()[0] + json_data = response.json()[-1] + json_data.pop('id') json_data.pop('created_timestamp') assert json_data == { - 'id': 1, 'todo_text': new_todo, 'done_timestamp': -1, 'done': False, @@ -63,20 +63,19 @@ def test_add_todo_list_item(self, data: DataObject): @given(data=st.data()) def test_add_todo_list_item_with_body(self, data: DataObject): new_todo = data.draw(st.from_regex(TODO_ITEM_REGEX, fullmatch=True)) - with self.example_client_context() as client: + with self.method_client_context() as client: response = client.get('/api') assert response.status_code == 200 - assert response.json() == [] response = client.post('/api_body', data=json.dumps({'new_todo': new_todo})) assert response.status_code == 200 response = client.get('/api') assert response.status_code == 200 - json_data = response.json()[0] + json_data = response.json()[-1] json_data.pop('created_timestamp') + json_data.pop('id') assert json_data == { - 'id': 1, 'todo_text': new_todo, 'done_timestamp': -1, 'done': False, @@ -86,10 +85,9 @@ def test_add_todo_list_item_with_body(self, data: DataObject): @given(data=st.data()) def test_add_todo_list_item_with_model(self, data: DataObject): new_todo = data.draw(st.from_regex(TODO_ITEM_REGEX, fullmatch=True)) - with self.example_client_context() as client: + with self.method_client_context() as client: response = client.get('/api') assert response.status_code == 200 - assert response.json() == [] response = client.post( '/api_model', @@ -102,10 +100,10 @@ def test_add_todo_list_item_with_model(self, data: DataObject): response = client.get('/api') assert response.status_code == 200 - json_data = response.json()[0] + json_data = response.json()[-1] json_data.pop('created_timestamp') + json_data.pop('id') assert json_data == { - 'id': 1, 'todo_text': new_todo, 'done_timestamp': -1, 'done': False, @@ -114,12 +112,19 @@ def test_add_todo_list_item_with_model(self, data: DataObject): @settings(max_examples=20, deadline=2_000) @given(data=st.data()) def test_remove_todo_list_items(self, data: DataObject): - todo_items: List[str] = data.draw(st.lists(st.from_regex(TODO_ITEM_REGEX, fullmatch=True), max_size=100)) - with self.example_client_context() as client: + todo_items: List[str] = data.draw( + st.lists(st.from_regex(TODO_ITEM_REGEX, fullmatch=True), min_size=1, max_size=100) + ) + with self.method_client_context() as client: response = client.get('/api') assert response.status_code == 200 - assert response.json() == [] + for existing_item in response.json(): + existing_item_id = existing_item['id'] + client.delete(f'/api/{existing_item_id}') + response = client.get('/api') + assert response.status_code == 200 + assert response.json() == [] for new_todo in todo_items: response = client.post( '/api_model', @@ -132,9 +137,11 @@ def test_remove_todo_list_items(self, data: DataObject): response = client.get('/api') assert response.status_code == 200 - assert len(todo_items) == len(response.json()) + added_items = response.json() + assert len(todo_items) == len(added_items) - items = list(enumerate(todo_items, start=1)) + start_id = min(item['id'] for item in added_items) + items = list(enumerate(todo_items, start=start_id)) random.shuffle(items) items_amount = len(todo_items) - 1 for item_id, _item in items: diff --git a/fastapi_server/test/test_database.py b/fastapi_server/test/test_database.py deleted file mode 100644 index f7e5e573..00000000 --- a/fastapi_server/test/test_database.py +++ /dev/null @@ -1,50 +0,0 @@ -import hypothesis.strategies as st -from hypothesis import given -from hypothesis.strategies import DataObject -from sqlmodel import Session, select - -from fastapi_server.models.user import User -from fastapi_server.test.base_test import BaseTest - - -class TestDatabase(BaseTest): - - def test_user_add_single(self, method_session_fixture: Session): - session = method_session_fixture - assert isinstance(session, Session) - username = 'asd' - email = 'asd@gmail.com' - password = 'asd2' - assert session.exec(select(User)).all() == [] - session.add( - User( - username=username, - email=email, - password_hashed=password, - is_admin=False, - is_disabled=False, - is_verified=False, - ) - ) - session.commit() - assert session.exec(select(User)).all() != [] - - @given(data=st.data()) - def test_user_add_multiple(self, data: DataObject): - username = data.draw(st.from_regex('[a-zA-Z0-9]{1,20}', fullmatch=True)) - email = data.draw(st.from_regex('[a-zA-Z]{1,20}@gmailcom', fullmatch=True)) - password = data.draw(st.from_regex('[a-zA-Z0-9]{1,20}', fullmatch=True)) - with self.example_session_context() as session: - assert session.exec(select(User)).all() == [] - session.add( - User( - username=username, - email=email, - password_hashed=password, - is_admin=False, - is_disabled=False, - is_verified=False, - ) - ) - session.commit() - assert session.exec(select(User)).all() != [] diff --git a/fastapi_server/test/test_helper.py b/fastapi_server/test/test_helper.py deleted file mode 100644 index 891f591c..00000000 --- a/fastapi_server/test/test_helper.py +++ /dev/null @@ -1,47 +0,0 @@ -from string import ascii_lowercase, ascii_uppercase - -import hypothesis.strategies as st -from hypothesis import given, settings -from hypothesis.strategies import DataObject - -from fastapi_server.helper.helper import hash_password, jwt_decode, jwt_encode -from fastapi_server.test.base_test import BaseTest - - -class TestHelper(BaseTest): - - def test_jwt(self): - my_data = {'some': 'data'} - my_secret = 'supersecuresecret' - jwt_token = jwt_encode(my_data, my_secret) - decoded = jwt_decode(jwt_token, my_secret) - assert my_data == decoded - - @settings(max_examples=200) - @given(data=st.data()) - def test_jwt_multiple(self, data: DataObject): - keys = st.text() - values = st.floats(allow_nan=False) | st.integers() | st.text() | st.lists(st.text()) - my_data = data.draw(st.dictionaries( - keys=keys, - values=values, - )) - my_secret = data.draw(st.text()) - jwt_token = jwt_encode(my_data, my_secret) - decoded = jwt_decode(jwt_token, my_secret) - assert my_data == decoded - - def test_hash_password(self): - my_plain_password = 'supersecurepassword' - my_salt = (ascii_lowercase + ascii_uppercase)[:32].encode() - password_hashed: str = hash_password(my_plain_password, my_salt) - assert len(password_hashed) == 64 - assert password_hashed == 'e67dcd79181caf53a1316aa1fcf3e8f23e1ba4d9013b0d1128ba01b60924d621' - - @settings(max_examples=200) - @given(data=st.data()) - def test_hash_password_multiple(self, data: DataObject): - my_plain_password = data.draw(st.text()) - my_salt = data.draw(st.binary(min_size=32, max_size=32)) - password_hashed: str = hash_password(my_plain_password, my_salt) - assert len(password_hashed) == 64 diff --git a/poetry.lock b/poetry.lock index bd98b21c..fb863e9b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -39,7 +39,7 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.7.5" +version = "1.7.6" description = "A database migration tool for SQLAlchemy." category = "main" optional = false @@ -54,23 +54,6 @@ SQLAlchemy = ">=1.3.0" [package.extras] tz = ["python-dateutil"] -[[package]] -name = "anyio" -version = "3.5.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" -optional = false -python-versions = ">=3.6.2" - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16)"] - [[package]] name = "appnope" version = "0.1.2" @@ -79,22 +62,11 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "asgiref" -version = "3.5.0" -description = "ASGI specs, helper code, and adapters" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] - [[package]] name = "astroid" version = "2.9.3" description = "An abstract syntax tree for Python with inference support." -category = "main" +category = "dev" optional = false python-versions = ">=3.6.2" @@ -167,7 +139,7 @@ typecheck = ["mypy"] [[package]] name = "beanie" -version = "1.8.12" +version = "1.10.0" description = "Asynchronous Python ODM for MongoDB" category = "main" optional = false @@ -297,7 +269,7 @@ immutables = ">=0.9" [[package]] name = "coverage" -version = "6.3" +version = "6.3.2" description = "Code coverage measurement for Python" category = "dev" optional = false @@ -352,43 +324,6 @@ typing-inspect = ">=0.4.0" [package.extras] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] -[[package]] -name = "deal" -version = "4.19.1" -description = "**Deal** is a Python library for [design by contract][wiki] (DbC) programming." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -astroid = "*" -deal-solver = "*" -hypothesis = "*" -pygments = "*" -typeguard = "*" -vaa = ">=0.2.1" - -[package.extras] -docs = ["m2r2", "myst-parser", "sphinx (>=3.5.0,<3.6.0)", "sphinx-rtd-theme (>=0.5.0,<0.6.0)"] -lint = ["flake8", "flake8-commas", "flake8-quotes", "mypy (>=0.900)", "mypy_test (>=0.1.1)", "isort"] -test = ["coverage", "pytest-cov", "isort", "marshmallow", "pytest", "urllib3", "sphinx"] - -[[package]] -name = "deal-solver" -version = "0.1.0" -description = "z3-powered solver (theorem prover) for deal." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -astroid = "*" -z3-solver = "*" - -[package.extras] -lint = ["flake8", "flake8-bugbear", "flake8-commas", "flake8-quotes", "isort", "mypy (>=0.910)"] -test = ["hypothesis", "pytest", "pytest-cov", "pytest-xdist"] - [[package]] name = "decorator" version = "5.1.0" @@ -407,7 +342,7 @@ python-versions = "*" [[package]] name = "dpath" -version = "2.0.5" +version = "2.0.6" description = "Filesystem-like pathing and searching for dictionaries" category = "main" optional = false @@ -424,24 +359,6 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] testing = ["pre-commit"] -[[package]] -name = "fastapi" -version = "0.70.1" -description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -category = "main" -optional = false -python-versions = ">=3.6.1" - -[package.dependencies] -pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" -starlette = "0.16.0" - -[package.extras] -all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] -test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] - [[package]] name = "fasteners" version = "0.16.3" @@ -502,9 +419,9 @@ python-versions = ">=3.6" [[package]] name = "hypothesis" -version = "6.36.0" +version = "6.39.3" description = "A library for property-based testing" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -530,7 +447,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] [[package]] name = "identify" -version = "2.4.6" +version = "2.4.11" description = "File identification library for Python" category = "dev" optional = false @@ -571,7 +488,7 @@ test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (>=0.91 [[package]] name = "importlib-metadata" -version = "4.10.1" +version = "4.11.2" description = "Read metadata from Python packages" category = "main" optional = false @@ -581,9 +498,9 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" @@ -686,7 +603,7 @@ testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] name = "lazy-object-proxy" version = "1.7.1" description = "A fast and thorough lazy object proxy." -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -747,11 +664,11 @@ restructuredText = ["rst2ansi"] [[package]] name = "markupsafe" -version = "2.0.1" +version = "2.1.0" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "marshmallow" @@ -881,7 +798,7 @@ python-versions = "*" [[package]] name = "numpy" -version = "1.22.1" +version = "1.22.3" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false @@ -977,7 +894,7 @@ docs = ["sphinx", "sphinx-argparse"] [[package]] name = "peewee" -version = "3.14.8" +version = "3.14.10" description = "a little orm" category = "main" optional = false @@ -1416,7 +1333,7 @@ cli = ["click (>=5.0)"] [[package]] name = "python-http-client" -version = "3.3.5" +version = "3.3.6" description = "HTTP REST client, simplified for Python" category = "main" optional = false @@ -1499,7 +1416,7 @@ flake = ["flake8 (==3.7.9)", "pyflakes (==2.1.1)", "pycodestyle (==2.5.0)", "fla [[package]] name = "scalene" -version = "1.5.0" +version = "1.5.4" description = "Scalene: A high-resolution, low-overhead CPU, GPU, and memory profiler for Python" category = "dev" optional = false @@ -1601,7 +1518,7 @@ flake = ["flake8 (==3.7.9)", "pyflakes (==2.1.1)", "pycodestyle (==2.5.0)", "fla [[package]] name = "sendgrid" -version = "6.9.5" +version = "6.9.6" description = "Twilio SendGrid library for Python" category = "main" optional = false @@ -1629,7 +1546,7 @@ toml = ["setuptools (>=42)"] [[package]] name = "shapely" -version = "1.8.0" +version = "1.8.1.post1" description = "Geometric objects, predicates, and operations" category = "main" optional = false @@ -1685,7 +1602,7 @@ python-versions = ">=3.6" [[package]] name = "sqlalchemy" -version = "1.4.31" +version = "1.4.32" description = "Database Abstraction Library" category = "main" optional = false @@ -1717,7 +1634,7 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy2-stubs" -version = "0.0.2a19" +version = "0.0.2a20" description = "Typing Stubs for SQLAlchemy 1.4" category = "main" optional = false @@ -1747,23 +1664,9 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "starlette" -version = "0.16.0" -description = "The little ASGI library that shines." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -anyio = ">=3.0.0,<4" - -[package.extras] -full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] - [[package]] name = "tinydb" -version = "4.6.1" +version = "4.7.0" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" category = "main" optional = false @@ -1779,7 +1682,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "tomli" -version = "2.0.0" +version = "2.0.1" description = "A lil' TOML parser" category = "main" optional = false @@ -1834,21 +1737,9 @@ async-generator = ">=1.10" trio = ">=0.11" wsproto = ">=0.14" -[[package]] -name = "typeguard" -version = "2.13.3" -description = "Run-time type checker for Python" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[package.extras] -doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["pytest", "typing-extensions", "mypy"] - [[package]] name = "typing-extensions" -version = "4.0.1" +version = "4.1.1" description = "Backported and Experimental Type Hints for Python 3.6+" category = "main" optional = false @@ -1885,37 +1776,9 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "uvicorn" -version = "0.16.0" -description = "The lightning-fast ASGI server." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -asgiref = ">=3.4.0" -click = ">=7.0" -h11 = ">=0.8" - -[package.extras] -standard = ["httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "websockets (>=9.1)", "websockets (>=10.0)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] - -[[package]] -name = "vaa" -version = "0.2.1" -description = "Validators Adapter. The common interface for all validators." -category = "main" -optional = false -python-versions = "*" - -[package.extras] -validators = ["cerberus", "django", "djangorestframework", "marshmallow (>=3.0.1)", "pyschemes", "wtforms"] -tests = ["pytest"] - [[package]] name = "virtualenv" -version = "20.13.0" +version = "20.13.3" description = "Virtual Python Environment builder" category = "main" optional = false @@ -1962,7 +1825,7 @@ dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] name = "wrapt" version = "1.13.3" description = "Module for decorators, wrappers and monkey patching." -category = "main" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" @@ -1997,14 +1860,6 @@ python-versions = ">=3.6" idna = ">=2.0" multidict = ">=4.0" -[[package]] -name = "z3-solver" -version = "4.8.14.0" -description = "an efficient SMT solver library" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "zipp" version = "3.7.0" @@ -2020,7 +1875,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "a85026b8e0f6fb0bb9b66f7af12a49393ea90da0501ff4415929b7513ec8689a" +content-hash = "3f313fce030cc91c00bc13acb55713a90f7b17f08ad6ab25f3313d779ded5254" [metadata.files] aiocontextvars = [ @@ -2106,21 +1961,13 @@ aiosignal = [ {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, ] alembic = [ - {file = "alembic-1.7.5-py3-none-any.whl", hash = "sha256:a9dde941534e3d7573d9644e8ea62a2953541e27bc1793e166f60b777ae098b4"}, - {file = "alembic-1.7.5.tar.gz", hash = "sha256:7c328694a2e68f03ee971e63c3bd885846470373a5b532cf2c9f1601c413b153"}, -] -anyio = [ - {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, - {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, + {file = "alembic-1.7.6-py3-none-any.whl", hash = "sha256:ad842f2c3ab5c5d4861232730779c05e33db4ba880a08b85eb505e87c01095bc"}, + {file = "alembic-1.7.6.tar.gz", hash = "sha256:6c0c05e9768a896d804387e20b299880fe01bc56484246b0dffe8075d6d3d847"}, ] appnope = [ {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, ] -asgiref = [ - {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, - {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, -] astroid = [ {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, @@ -2155,8 +2002,8 @@ bcrypt = [ {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, ] beanie = [ - {file = "beanie-1.8.12-py3-none-any.whl", hash = "sha256:38062203eed8b8088a57c6fba0948ee55c268419d0fa10848a273b67698cebe1"}, - {file = "beanie-1.8.12.tar.gz", hash = "sha256:bfdddcfb962f870e1096d2d4602765a21875285a583e081a76571f625c6b7309"}, + {file = "beanie-1.10.0-py3-none-any.whl", hash = "sha256:2d50a4417abf050bb367a5536029311fb1c146e9a7f5711e90a18b1d80249077"}, + {file = "beanie-1.10.0.tar.gz", hash = "sha256:71327af73c72932b29d8e55e4f399c0ad740f7f1f1f7efcb3d71a5f284459709"}, ] beautifulsoup4 = [ {file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"}, @@ -2254,50 +2101,47 @@ contextvars = [ {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, ] coverage = [ - {file = "coverage-6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e8071e7d9ba9f457fc674afc3de054450be2c9b195c470147fbbc082468d8ff7"}, - {file = "coverage-6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86c91c511853dfda81c2cf2360502cb72783f4b7cebabef27869f00cbe1db07d"}, - {file = "coverage-6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c4ce3b647bd1792d4394f5690d9df6dc035b00bcdbc5595099c01282a59ae01"}, - {file = "coverage-6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a491e159294d756e7fc8462f98175e2d2225e4dbe062cca7d3e0d5a75ba6260"}, - {file = "coverage-6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d008e0f67ac800b0ca04d7914b8501312c8c6c00ad8c7ba17754609fae1231a"}, - {file = "coverage-6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4578728c36de2801c1deb1c6b760d31883e62e33f33c7ba8f982e609dc95167d"}, - {file = "coverage-6.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7ee317486593193e066fc5e98ac0ce712178c21529a85c07b7cb978171f25d53"}, - {file = "coverage-6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2bc85664b06ba42d14bb74d6ddf19d8bfc520cb660561d2d9ce5786ae72f71b5"}, - {file = "coverage-6.3-cp310-cp310-win32.whl", hash = "sha256:27a94db5dc098c25048b0aca155f5fac674f2cf1b1736c5272ba28ead2fc267e"}, - {file = "coverage-6.3-cp310-cp310-win_amd64.whl", hash = "sha256:bde4aeabc0d1b2e52c4036c54440b1ad05beeca8113f47aceb4998bb7471e2c2"}, - {file = "coverage-6.3-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:509c68c3e2015022aeda03b003dd68fa19987cdcf64e9d4edc98db41cfc45d30"}, - {file = "coverage-6.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e4ff163602c5c77e7bb4ea81ba5d3b793b4419f8acd296aae149370902cf4e92"}, - {file = "coverage-6.3-cp311-cp311-win_amd64.whl", hash = "sha256:d1675db48490e5fa0b300f6329ecb8a9a37c29b9ab64fa9c964d34111788ca2d"}, - {file = "coverage-6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7eed8459a2b81848cafb3280b39d7d49950d5f98e403677941c752e7e7ee47cb"}, - {file = "coverage-6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b4285fde5286b946835a1a53bba3ad41ef74285ba9e8013e14b5ea93deaeafc"}, - {file = "coverage-6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4748349734110fd32d46ff8897b561e6300d8989a494ad5a0a2e4f0ca974fc7"}, - {file = "coverage-6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:823f9325283dc9565ba0aa2d240471a93ca8999861779b2b6c7aded45b58ee0f"}, - {file = "coverage-6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fff16a30fdf57b214778eff86391301c4509e327a65b877862f7c929f10a4253"}, - {file = "coverage-6.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:da1a428bdbe71f9a8c270c7baab29e9552ac9d0e0cba5e7e9a4c9ee6465d258d"}, - {file = "coverage-6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7d82c610a2e10372e128023c5baf9ce3d270f3029fe7274ff5bc2897c68f1318"}, - {file = "coverage-6.3-cp37-cp37m-win32.whl", hash = "sha256:11e61c5548ecf74ea1f8b059730b049871f0e32b74f88bd0d670c20c819ad749"}, - {file = "coverage-6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0c3525b1a182c8ffc9bca7e56b521e0c2b8b3e82f033c8e16d6d721f1b54d6"}, - {file = "coverage-6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a189036c50dcd56100746139a459f0d27540fef95b09aba03e786540b8feaa5f"}, - {file = "coverage-6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32168001f33025fd756884d56d01adebb34e6c8c0b3395ca8584cdcee9c7c9d2"}, - {file = "coverage-6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5d79c9af3f410a2b5acad91258b4ae179ee9c83897eb9de69151b179b0227f5"}, - {file = "coverage-6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:85c5fc9029043cf8b07f73fbb0a7ab6d3b717510c3b5642b77058ea55d7cacde"}, - {file = "coverage-6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7596aa2f2b8fa5604129cfc9a27ad9beec0a96f18078cb424d029fdd707468d"}, - {file = "coverage-6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ce443a3e6df90d692c38762f108fc4c88314bf477689f04de76b3f252e7a351c"}, - {file = "coverage-6.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:012157499ec4f135fc36cd2177e3d1a1840af9b236cbe80e9a5ccfc83d912a69"}, - {file = "coverage-6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a34d313105cdd0d3644c56df2d743fe467270d6ab93b5d4a347eb9fec8924d6"}, - {file = "coverage-6.3-cp38-cp38-win32.whl", hash = "sha256:6e78b1e25e5c5695dea012be473e442f7094d066925604be20b30713dbd47f89"}, - {file = "coverage-6.3-cp38-cp38-win_amd64.whl", hash = "sha256:433b99f7b0613bdcdc0b00cc3d39ed6d756797e3b078d2c43f8a38288520aec6"}, - {file = "coverage-6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9ed3244b415725f08ca3bdf02ed681089fd95e9465099a21c8e2d9c5d6ca2606"}, - {file = "coverage-6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab4fc4b866b279740e0d917402f0e9a08683e002f43fa408e9655818ed392196"}, - {file = "coverage-6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8582e9280f8d0f38114fe95a92ae8d0790b56b099d728cc4f8a2e14b1c4a18c"}, - {file = "coverage-6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c72bb4679283c6737f452eeb9b2a0e570acaef2197ad255fb20162adc80bea76"}, - {file = "coverage-6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca29c352389ea27a24c79acd117abdd8a865c6eb01576b6f0990cd9a4e9c9f48"}, - {file = "coverage-6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:152cc2624381df4e4e604e21bd8e95eb8059535f7b768c1fb8b8ae0b26f47ab0"}, - {file = "coverage-6.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:51372e24b1f7143ee2df6b45cff6a721f3abe93b1e506196f3ffa4155c2497f7"}, - {file = "coverage-6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72d9d186508325a456475dd05b1756f9a204c7086b07fffb227ef8cee03b1dc2"}, - {file = "coverage-6.3-cp39-cp39-win32.whl", hash = "sha256:649df3641eb351cdfd0d5533c92fc9df507b6b2bf48a7ef8c71ab63cbc7b5c3c"}, - {file = "coverage-6.3-cp39-cp39-win_amd64.whl", hash = "sha256:e67ccd53da5958ea1ec833a160b96357f90859c220a00150de011b787c27b98d"}, - {file = "coverage-6.3-pp36.pp37.pp38-none-any.whl", hash = "sha256:27ac7cb84538e278e07569ceaaa6f807a029dc194b1c819a9820b9bb5dbf63ab"}, - {file = "coverage-6.3.tar.gz", hash = "sha256:987a84ff98a309994ca77ed3cc4b92424f824278e48e4bf7d1bb79a63cfe2099"}, + {file = "coverage-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf"}, + {file = "coverage-6.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac"}, + {file = "coverage-6.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1"}, + {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4"}, + {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903"}, + {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c"}, + {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f"}, + {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05"}, + {file = "coverage-6.3.2-cp310-cp310-win32.whl", hash = "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39"}, + {file = "coverage-6.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1"}, + {file = "coverage-6.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa"}, + {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518"}, + {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7"}, + {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6"}, + {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad"}, + {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359"}, + {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4"}, + {file = "coverage-6.3.2-cp37-cp37m-win32.whl", hash = "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca"}, + {file = "coverage-6.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3"}, + {file = "coverage-6.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d"}, + {file = "coverage-6.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059"}, + {file = "coverage-6.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512"}, + {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca"}, + {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d"}, + {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0"}, + {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6"}, + {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2"}, + {file = "coverage-6.3.2-cp38-cp38-win32.whl", hash = "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e"}, + {file = "coverage-6.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1"}, + {file = "coverage-6.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620"}, + {file = "coverage-6.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d"}, + {file = "coverage-6.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536"}, + {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7"}, + {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2"}, + {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4"}, + {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69"}, + {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684"}, + {file = "coverage-6.3.2-cp39-cp39-win32.whl", hash = "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4"}, + {file = "coverage-6.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92"}, + {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, + {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, ] cryptography = [ {file = "cryptography-36.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:73bc2d3f2444bcfeac67dd130ff2ea598ea5f20b40e36d19821b4df8c9c5037b"}, @@ -2329,14 +2173,6 @@ dataclasses-json = [ {file = "dataclasses-json-0.5.6.tar.gz", hash = "sha256:1f60be3405dee30b86ffbf6a436db8ba5efaeeb676bfda358e516a97aa7dfce4"}, {file = "dataclasses_json-0.5.6-py3-none-any.whl", hash = "sha256:1d7f3a284a49d350ddbabde0e7d0c5ffa34a144aaf1bcb5b9f2c87673ff0c76e"}, ] -deal = [ - {file = "deal-4.19.1-py3-none-any.whl", hash = "sha256:28efc7f377525c93d3dbd21b76e486030eb9490e672a56a0a63ddc590758fd2d"}, - {file = "deal-4.19.1.tar.gz", hash = "sha256:d62d959bd7cc1248b45bbf2d3e0b32a4e1f205994f030a84c75c524e7910f0cd"}, -] -deal-solver = [ - {file = "deal-solver-0.1.0.tar.gz", hash = "sha256:c42300b2bdf01df7315b409613145440bb393fbace0c2fd9795f59513c7a1990"}, - {file = "deal_solver-0.1.0-py3-none-any.whl", hash = "sha256:ceb33883072c96141a5c25d497f9ffb459a2b7baebc50f4182ae10fd58ada1a1"}, -] decorator = [ {file = "decorator-5.1.0-py3-none-any.whl", hash = "sha256:7b12e7c3c6ab203a29e157335e9122cb03de9ab7264b137594103fd4a683b374"}, {file = "decorator-5.1.0.tar.gz", hash = "sha256:e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7"}, @@ -2346,17 +2182,13 @@ distlib = [ {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] dpath = [ - {file = "dpath-2.0.5-py3-none-any.whl", hash = "sha256:e7813fd8a9dd0d4c7cd4014533ce955eff712bcb2e8189be79bb893890a9db01"}, - {file = "dpath-2.0.5.tar.gz", hash = "sha256:ef74321b01479653c812fee69c53922364614d266a8e804d22058c5c02e5674e"}, + {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, + {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, ] execnet = [ {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, ] -fastapi = [ - {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, - {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, -] fasteners = [ {file = "fasteners-0.16.3-py2.py3-none-any.whl", hash = "sha256:8408e52656455977053871990bd25824d85803b9417aa348f10ba29ef0c751f7"}, {file = "fasteners-0.16.3.tar.gz", hash = "sha256:b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de"}, @@ -2486,12 +2318,12 @@ h11 = [ {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hypothesis = [ - {file = "hypothesis-6.36.0-py3-none-any.whl", hash = "sha256:fa9f845b06199ea87e68c6da04a609ff46e381b5d542351184790d54eaca144c"}, - {file = "hypothesis-6.36.0.tar.gz", hash = "sha256:2b9c56faa067d660f0802679689f825bf142eec8261ab9e2e6ea916b1d8278a1"}, + {file = "hypothesis-6.39.3-py3-none-any.whl", hash = "sha256:92f1c58e994e109897fd9b3c6d44eb3bd45ed95bf3c079c35f36fa0801fc5f31"}, + {file = "hypothesis-6.39.3.tar.gz", hash = "sha256:f496dd053fb951b6da9611481fb4e54eeab1d37b594da5efe869083fad3ae621"}, ] identify = [ - {file = "identify-2.4.6-py2.py3-none-any.whl", hash = "sha256:cf06b1639e0dca0c184b1504d8b73448c99a68e004a80524c7923b95f7b6837c"}, - {file = "identify-2.4.6.tar.gz", hash = "sha256:233679e3f61a02015d4293dbccf16aa0e4996f868bd114688b8c124f18826706"}, + {file = "identify-2.4.11-py2.py3-none-any.whl", hash = "sha256:fd906823ed1db23c7a48f9b176a1d71cb8abede1e21ebe614bac7bdd688d9213"}, + {file = "identify-2.4.11.tar.gz", hash = "sha256:2986942d3974c8f2e5019a190523b0b0e2a07cb8e89bf236727fb4b26f27f8fd"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -2530,8 +2362,8 @@ immutables = [ {file = "immutables-0.16.tar.gz", hash = "sha256:d67e86859598eed0d926562da33325dac7767b7b1eff84e232c22abea19f4360"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"}, - {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"}, + {file = "importlib_metadata-4.11.2-py3-none-any.whl", hash = "sha256:d16e8c1deb60de41b8e8ed21c1a7b947b0bc62fab7e1d470bcdf331cea2e6735"}, + {file = "importlib_metadata-4.11.2.tar.gz", hash = "sha256:b36ffa925fe3139b2f6ff11d6925ffd4fa7bc47870165e3ac260ac7b4f91e6ac"}, ] importlib-resources = [ {file = "importlib_resources-5.4.0-py3-none-any.whl", hash = "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45"}, @@ -2612,60 +2444,46 @@ mando = [ {file = "mando-0.6.4.tar.gz", hash = "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960"}, ] markupsafe = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, + {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, ] marshmallow = [ {file = "marshmallow-3.14.1-py3-none-any.whl", hash = "sha256:04438610bc6dadbdddb22a4a55bcc7f6f8099e69580b2e67f5a681933a1f4400"}, @@ -2792,28 +2610,25 @@ nose = [ {file = "nose-1.3.7.tar.gz", hash = "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"}, ] numpy = [ - {file = "numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d62d6b0870b53799204515145935608cdeb4cebb95a26800b6750e48884cc5b"}, - {file = "numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:831f2df87bd3afdfc77829bc94bd997a7c212663889d56518359c827d7113b1f"}, - {file = "numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d1563060e77096367952fb44fca595f2b2f477156de389ce7c0ade3aef29e21"}, - {file = "numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69958735d5e01f7b38226a6c6e7187d72b7e4d42b6b496aca5860b611ca0c193"}, - {file = "numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45a7dfbf9ed8d68fd39763940591db7637cf8817c5bce1a44f7b56c97cbe211e"}, - {file = "numpy-1.22.1-cp310-cp310-win_amd64.whl", hash = "sha256:7e957ca8112c689b728037cea9c9567c27cf912741fabda9efc2c7d33d29dfa1"}, - {file = "numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:800dfeaffb2219d49377da1371d710d7952c9533b57f3d51b15e61c4269a1b5b"}, - {file = "numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:65f5e257987601fdfc63f1d02fca4d1c44a2b85b802f03bd6abc2b0b14648dd2"}, - {file = "numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:632e062569b0fe05654b15ef0e91a53c0a95d08ffe698b66f6ba0f927ad267c2"}, - {file = "numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d245a2bf79188d3f361137608c3cd12ed79076badd743dc660750a9f3074f7c"}, - {file = "numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b4018a19d2ad9606ce9089f3d52206a41b23de5dfe8dc947d2ec49ce45d015"}, - {file = "numpy-1.22.1-cp38-cp38-win32.whl", hash = "sha256:f8ad59e6e341f38266f1549c7c2ec70ea0e3d1effb62a44e5c3dba41c55f0187"}, - {file = "numpy-1.22.1-cp38-cp38-win_amd64.whl", hash = "sha256:60f19c61b589d44fbbab8ff126640ae712e163299c2dd422bfe4edc7ec51aa9b"}, - {file = "numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2db01d9838a497ba2aa9a87515aeaf458f42351d72d4e7f3b8ddbd1eba9479f2"}, - {file = "numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bcd19dab43b852b03868796f533b5f5561e6c0e3048415e675bec8d2e9d286c1"}, - {file = "numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78bfbdf809fc236490e7e65715bbd98377b122f329457fffde206299e163e7f3"}, - {file = "numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c51124df17f012c3b757380782ae46eee85213a3215e51477e559739f57d9bf6"}, - {file = "numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88d54b7b516f0ca38a69590557814de2dd638d7d4ed04864826acaac5ebb8f01"}, - {file = "numpy-1.22.1-cp39-cp39-win32.whl", hash = "sha256:b5ec9a5eaf391761c61fd873363ef3560a3614e9b4ead17347e4deda4358bca4"}, - {file = "numpy-1.22.1-cp39-cp39-win_amd64.whl", hash = "sha256:4ac4d7c9f8ea2a79d721ebfcce81705fc3cd61a10b731354f1049eb8c99521e8"}, - {file = "numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e60ef82c358ded965fdd3132b5738eade055f48067ac8a5a8ac75acc00cad31f"}, - {file = "numpy-1.22.1.zip", hash = "sha256:e348ccf5bc5235fc405ab19d53bec215bb373300e5523c7b476cc0da8a5e9973"}, + {file = "numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75"}, + {file = "numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab"}, + {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e"}, + {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4"}, + {file = "numpy-1.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4"}, + {file = "numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce"}, + {file = "numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe"}, + {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5"}, + {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1"}, + {file = "numpy-1.22.3-cp38-cp38-win32.whl", hash = "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62"}, + {file = "numpy-1.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676"}, + {file = "numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123"}, + {file = "numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802"}, + {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d"}, + {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168"}, + {file = "numpy-1.22.3-cp39-cp39-win32.whl", hash = "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"}, + {file = "numpy-1.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a"}, + {file = "numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f"}, + {file = "numpy-1.22.3.zip", hash = "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18"}, ] nvidia-ml-py = [ {file = "nvidia-ml-py-11.515.0.tar.gz", hash = "sha256:8b064f97e30de27f0fc32dd618b8a57b2cf3263c1346142f0566512247996d9d"}, @@ -2844,7 +2659,7 @@ parso = [ {file = "pdfminer.six-20211012.tar.gz", hash = "sha256:0351f17d362ee2d48b158be52bcde6576d96460efd038a3e89a043fba6d634d7"}, ] peewee = [ - {file = "peewee-3.14.8.tar.gz", hash = "sha256:01bd7f734defb08d7a3346a0c0ca7011bc8d0d685934ec0e001b3371d522ec53"}, + {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, ] pendulum = [ {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, @@ -3216,8 +3031,8 @@ python-dotenv = [ {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, ] python-http-client = [ - {file = "python_http_client-3.3.5-py3-none-any.whl", hash = "sha256:558ece0088af1c3430d55ea65e3f06a6a3d7cdd9e14bd905916081ce876c5aaf"}, - {file = "python_http_client-3.3.5.tar.gz", hash = "sha256:a41da9bd1d38c6a5fc673d1667501e9e691783f7caa14db70985da43c6d99fba"}, + {file = "python_http_client-3.3.6-py3-none-any.whl", hash = "sha256:5a005aecf0f56b2247582c16a917ccd585d9973a9d6d9ebc228527f42102ee4d"}, + {file = "python_http_client-3.3.6.tar.gz", hash = "sha256:7d621aef781b66e1cfe942a9cd4fa5ad86d3ecd4d5d8110d3c75b3175d71fe38"}, ] pytzdata = [ {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, @@ -3275,18 +3090,18 @@ sbvirtualdisplay = [ {file = "sbvirtualdisplay-1.0.0.tar.gz", hash = "sha256:25e98f2e92cbb4f0a3470a7695e6e9bec8e9b29be7e7208bab38fc6552a81897"}, ] scalene = [ - {file = "scalene-1.5.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0c8333f8e6e34d433961147fb1342c19e25f4e699d292bc8434fafa11db18113"}, - {file = "scalene-1.5.0-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:000efce68721c34cee0b75bdba4e8b5f3aee85e30598515ee6ce1da129226c3e"}, - {file = "scalene-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:bb80a3a14663feff508fef48a572e36fb3c700d1756975b6f976cc2e4415450f"}, - {file = "scalene-1.5.0-cp37-cp37m-macosx_10_14_universal2.whl", hash = "sha256:deaec2b282288cebf6e1960170aa239d221f79cd3048b983ca97f8f0a83af95b"}, - {file = "scalene-1.5.0-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:96252e51886b2ddab2e9a314c94828f4acb8fc8d89fffffcaa41b23b66ef432c"}, - {file = "scalene-1.5.0-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:250608198e7e92a229ef8db5900c6a00300921df1e2257bd93a63fd07b7d3cb8"}, - {file = "scalene-1.5.0-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:5b3aacd8518c9477d35dd7fdeac4f6a04d69d05288da580d33ffd288a44e8a65"}, - {file = "scalene-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:9a38f0507416d96a083bc35468846df454da41cbfe48a2fdcd123d86b4b23d68"}, - {file = "scalene-1.5.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:5458f0697777723b1909760cc3136e23e0c6a17e7eaffb3f2d65a0bb9161106d"}, - {file = "scalene-1.5.0-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:344d56c32e03e61f464fe52aa467b29f363888ad38d158be2ee194f0a03350d3"}, - {file = "scalene-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:0170eb40f481ad1a3b09d143c78cb3ace2d0d5d3b27ad48ad0883ecb74a30800"}, - {file = "scalene-1.5.0.tar.gz", hash = "sha256:7d5544320839940526053a309fabdd017a4b196edc250c97c1384cc9ec295a38"}, + {file = "scalene-1.5.4-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:2e9ccf3e1fd12fbd44f056f881582e5bf79f19938d2ce0c158bc12e945accd62"}, + {file = "scalene-1.5.4-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:1904c615a0616d0a7b507e5507be5da606b519c80831630b12daae6b45da3c7e"}, + {file = "scalene-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:8f83f1618d7c261fb7603ec1cec6f85f726f8f1c0b648368c235418cba5045fc"}, + {file = "scalene-1.5.4-cp37-cp37m-macosx_10_14_universal2.whl", hash = "sha256:3079c12d62954ff9a3099411fe381221e0da75e4f74679a6782a1e4c84acc79d"}, + {file = "scalene-1.5.4-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:040e9544705f05baa28c2719a4970032a30b22328d737eb4f2370d02b96d11d7"}, + {file = "scalene-1.5.4-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:9e1cc7d5ca2a13eb8c47ee4b039eb130427f3a61669519d894f7967badcd1d38"}, + {file = "scalene-1.5.4-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:eaddd1f25e2f0c9a7ef27b2504a32bb1ab1d6329d9dac1a75d89a052cb1692d3"}, + {file = "scalene-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:170d8e869e696c216d92219c9ab3e04125c63d20c4738000bbb4098d5053d181"}, + {file = "scalene-1.5.4-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:f93dd3ddb3e2e752544a059520bc82a66019832bd4380ee4230aed665751052b"}, + {file = "scalene-1.5.4-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:b8875464f721ab84d350841ddbcf8f3649501d90ce5b7680b9e5a701d6d3bba7"}, + {file = "scalene-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:a3918b01a77eb240e72fb6d6d3cf7277c970aac1c88d7a79e24f0f42b2af15ef"}, + {file = "scalene-1.5.4.tar.gz", hash = "sha256:2e9563adee90f474ada3e098112f2fff1491d1e497ae05c9f3d1162f696dba3b"}, ] selenium = [ {file = "selenium-4.1.0-py3-none-any.whl", hash = "sha256:27e7b64df961d609f3d57237caa0df123abbbe22d038f2ec9e332fb90ec1a939"}, @@ -3296,35 +3111,40 @@ seleniumbase = [ {file = "seleniumbase-2.3.6.tar.gz", hash = "sha256:658bd64700f3203f75e12510da8c8ee88a96fd57abd07fab26a7df7068fb38ad"}, ] sendgrid = [ - {file = "sendgrid-6.9.5-py3-none-any.whl", hash = "sha256:bcccaf06d30a8f09f05d15bcadefd721f8bb5e5d455704fa589f7333840c5243"}, - {file = "sendgrid-6.9.5.tar.gz", hash = "sha256:e0c17c7e8024841a750becf6912c218170f1d4a13161baa55abe313d60a9e0df"}, + {file = "sendgrid-6.9.6-py3-none-any.whl", hash = "sha256:368d5d6bac0e044049b2e63ddc584604a9a5f3ff554e906a980726bd46eee2ea"}, + {file = "sendgrid-6.9.6.tar.gz", hash = "sha256:39afb97a57f3b29224a38ecb2ddde242dc624014001100b1c72226cefa4fa7b2"}, ] setuptools-scm = [ {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, ] shapely = [ - {file = "Shapely-1.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c5632cedea6d815b61eb4c264da1c3f24a8ce2ceba2f74e30fba340ca230563"}, - {file = "Shapely-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ce1f18a0c9bb6b483c73bd7a0eb3a5e90676bcc29b9c27120236e662195c9d"}, - {file = "Shapely-1.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4e8cdffeec6d0c47ed1eb215ec4e80c024ac05be6ded982061c1e1188034f22f"}, - {file = "Shapely-1.8.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:83d10f8b47a7568fc90063f72da62cda201dc92ecadf80cc00c015babc48e11f"}, - {file = "Shapely-1.8.0-cp36-cp36m-win32.whl", hash = "sha256:78b3a46dadd47c27e658d5e8d9006b4b1eb9b7ab947b450059225dcee799a18f"}, - {file = "Shapely-1.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:0e640d6da59172d679270f0dfd88128b6ae7c57df864a030dd858ff924c307fc"}, - {file = "Shapely-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:68bdf463f7a609fbed42bbded18fa74c82a5741251984a5597d070060f4286f4"}, - {file = "Shapely-1.8.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c3cc87e66cbffd00ce0457c03969b64935752824bf43a1cd61f21cf606997d6"}, - {file = "Shapely-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:bd84d993a0e8e07f5ebb4c67794d5392fdd23ce59a7ccc121900f2080f57989a"}, - {file = "Shapely-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:796b15a483ac37c2dc757654186d0e064a42fb6f43cb9d1ff65d81cd0c92a84e"}, - {file = "Shapely-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:622f62d2b2da81dd40841a56db0f78bcf9f9af7a83c7d5f5dc9bcb234aa650ba"}, - {file = "Shapely-1.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26b43b69dfeb8a8cb27aacf5597134baf12337845c2bacb01809540c20d3d904"}, - {file = "Shapely-1.8.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cfb9d72d255af1a484e3859f4c9bb737950faf1d16c21d2b949ffc4ba5f46147"}, - {file = "Shapely-1.8.0-cp38-cp38-win32.whl", hash = "sha256:f304243b1f4d7bca9b3c9fdeec6565171e1b611fb4a3d6c93efc870c8a75958c"}, - {file = "Shapely-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:8917a91430126165cfa4bc2b4cf168121e37ff0c8657134e7398c597ca1fe934"}, - {file = "Shapely-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:19b54cd840883fd71cce98fd94916d1731eed8a32c115eb082b3ed24e631be02"}, - {file = "Shapely-1.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13cbb959863cec32d48e2cffdc4bb81828bc3b0fa4256c9b2b32edac5021a0e4"}, - {file = "Shapely-1.8.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7e1aebf4f1b2fbef40152fd531216387fcf6fe4ff2d777268381979b63c7c779"}, - {file = "Shapely-1.8.0-cp39-cp39-win32.whl", hash = "sha256:83145eda2e582c2046d1ecc6a0d7dbfe97f492434311124f65ea60f4e87a6b65"}, - {file = "Shapely-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b54ebd8fa4b78320f6d87032fe91363c7c1bf0f8d4a30eb93bca6413f787fd5"}, - {file = "Shapely-1.8.0.tar.gz", hash = "sha256:f5307ee14ba4199f8bbcf6532ca33064661c1433960c432c84f0daa73b47ef9c"}, + {file = "Shapely-1.8.1.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0ca96a3314b7a38a3bb385531469de1fcf2b2c2979ec2aa4f37b4c70632cf1ad"}, + {file = "Shapely-1.8.1.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:493902923fdd135316161a4ece5294ba3ce81accaa54540d2af3b93f7231143a"}, + {file = "Shapely-1.8.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:b82fc74d5efb11a71283c4ed69b4e036997cc70db4b73c646207ddf0476ade44"}, + {file = "Shapely-1.8.1.post1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:89bc5f3abc1ccbc7682c2e1664153c4f8f125fa9c24bff4abca48685739d5636"}, + {file = "Shapely-1.8.1.post1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:44cb895b1710f7559c28d69dfa08cafe4f58cd4b7a87091a55bdf6711ad9ad66"}, + {file = "Shapely-1.8.1.post1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:437fff3b6274be26ffa3e450de711ee01e436324b5a405952add2146227e3eb5"}, + {file = "Shapely-1.8.1.post1-cp36-cp36m-win32.whl", hash = "sha256:dc0f46212f84c57d13189fc33cf61e13eee292704d7652e931e4b51c54b0c73c"}, + {file = "Shapely-1.8.1.post1-cp36-cp36m-win_amd64.whl", hash = "sha256:9248aad099ecf228fbdd877b0c668823dd83c48798cf04d49a1be75167e3a7ce"}, + {file = "Shapely-1.8.1.post1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bab5ff7c576588acccd665ecce2a0fe7b47d4ce0398f2d5c1e5b2e27d09398d2"}, + {file = "Shapely-1.8.1.post1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2381ce0aff67d569eb509bcc051264aa5fbdc1fdd54f4c09963d0e09f16a8f1b"}, + {file = "Shapely-1.8.1.post1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b4d35e72022b2dbf152d476b0362596011c674ff68be9fc8f2e68e71d86502ca"}, + {file = "Shapely-1.8.1.post1-cp37-cp37m-win32.whl", hash = "sha256:5a420e7112b55a1587412a5b03ebf59e302ddd354da68516d3721718f6b8a7c5"}, + {file = "Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:c4c366e18edf91196a399f8f0f046f93516002e6d8af0b57c23e7c7d91944b16"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2020fda37c708d44a613c020cea09e81e476f96866f348afc2601e66c0e71db1"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69d5352fb977655c85d2f40a05ae24fc5053cccee77d0a8b1f773e54804e723e"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83f3c8191d30ae0e3dd557434c48ca591d75342d5a3f42fc5148ec42796be624"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e792635e92c9aacd1452a589a4fa2970114b6a9b1165e09655481f6e58970f5"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-win32.whl", hash = "sha256:8cf7331f61780506976fe2175e069d898e1b04ace73be21aad55c3ee92e58e3a"}, + {file = "Shapely-1.8.1.post1-cp38-cp38-win_amd64.whl", hash = "sha256:f109064bdb0753a6bac6238538cfeeb4a09739e2d556036b343b2eabeb9520b2"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aea1e87450adffba3d04ccbaa790df719bb7aa23b05ac797ad16be236a5d0db8"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3a3602ba2e7715ddd5d4114173dec83d3181bfb2497e8589676c284aa739fd67"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:679789d774cfe09ca05118cab78c0a6a42985b3ed23bc93606272a4509b4df28"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:363df36370f28fdc7789857929f6ff27e659f64087b4c89f7a47ed43bd3bfe4d"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-win32.whl", hash = "sha256:bc6063875182515d3888180cc4cbdbaa6443e4a4386c4bb25499e9875b75dcac"}, + {file = "Shapely-1.8.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:54aeb2a57978ce731fd52289d0e1deee7c232d41aed53091f38776378f644184"}, + {file = "Shapely-1.8.1.post1.tar.gz", hash = "sha256:93ff06ff05fbe2be843b93c7b1ad8292e56e665ba01b4708f75ae8a757972e9f"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -3347,46 +3167,45 @@ soupsieve = [ {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.31-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:c3abc34fed19fdeaead0ced8cf56dd121f08198008c033596aa6aae7cc58f59f"}, - {file = "SQLAlchemy-1.4.31-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8d0949b11681380b4a50ac3cd075e4816afe9fa4a8c8ae006c1ca26f0fa40ad8"}, - {file = "SQLAlchemy-1.4.31-cp27-cp27m-win32.whl", hash = "sha256:f3b7ec97e68b68cb1f9ddb82eda17b418f19a034fa8380a0ac04e8fe01532875"}, - {file = "SQLAlchemy-1.4.31-cp27-cp27m-win_amd64.whl", hash = "sha256:81f2dd355b57770fdf292b54f3e0a9823ec27a543f947fa2eb4ec0df44f35f0d"}, - {file = "SQLAlchemy-1.4.31-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4ad31cec8b49fd718470328ad9711f4dc703507d434fd45461096da0a7135ee0"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:05fa14f279d43df68964ad066f653193187909950aa0163320b728edfc400167"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dccff41478050e823271642837b904d5f9bda3f5cf7d371ce163f00a694118d6"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57205844f246bab9b666a32f59b046add8995c665d9ecb2b7b837b087df90639"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8210090a816d48a4291a47462bac750e3bc5c2442e6d64f7b8137a7c3f9ac5"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-win32.whl", hash = "sha256:2e216c13ecc7fcdcbb86bb3225425b3ed338e43a8810c7089ddb472676124b9b"}, - {file = "SQLAlchemy-1.4.31-cp310-cp310-win_amd64.whl", hash = "sha256:e3a86b59b6227ef72ffc10d4b23f0fe994bef64d4667eab4fb8cd43de4223bec"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:2fd4d3ca64c41dae31228b80556ab55b6489275fb204827f6560b65f95692cf3"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f22c040d196f841168b1456e77c30a18a3dc16b336ddbc5a24ce01ab4e95ae0"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0c7171aa5a57e522a04a31b84798b6c926234cb559c0939840c3235cf068813"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d046a9aeba9bc53e88a41e58beb72b6205abb9a20f6c136161adf9128e589db5"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-win32.whl", hash = "sha256:d86132922531f0dc5a4f424c7580a472a924dd737602638e704841c9cb24aea2"}, - {file = "SQLAlchemy-1.4.31-cp36-cp36m-win_amd64.whl", hash = "sha256:ca68c52e3cae491ace2bf39b35fef4ce26c192fd70b4cd90f040d419f70893b5"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:cf2cd387409b12d0a8b801610d6336ee7d24043b6dd965950eaec09b73e7262f"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb4b15fb1f0aafa65cbdc62d3c2078bea1ceecbfccc9a1f23a2113c9ac1191fa"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c317ddd7c586af350a6aef22b891e84b16bff1a27886ed5b30f15c1ed59caeaa"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c7ed6c69debaf6198fadb1c16ae1253a29a7670bbf0646f92582eb465a0b999"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-win32.whl", hash = "sha256:6a01ec49ca54ce03bc14e10de55dfc64187a2194b3b0e5ac0fdbe9b24767e79e"}, - {file = "SQLAlchemy-1.4.31-cp37-cp37m-win_amd64.whl", hash = "sha256:330eb45395874cc7787214fdd4489e2afb931bc49e0a7a8f9cd56d6e9c5b1639"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5e9c7b3567edbc2183607f7d9f3e7e89355b8f8984eec4d2cd1e1513c8f7b43f"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de85c26a5a1c72e695ab0454e92f60213b4459b8d7c502e0be7a6369690eeb1a"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:975f5c0793892c634c4920057da0de3a48bbbbd0a5c86f5fcf2f2fedf41b76da"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-win32.whl", hash = "sha256:b35dca159c1c9fa8a5f9005e42133eed82705bf8e243da371a5e5826440e65ca"}, - {file = "SQLAlchemy-1.4.31-cp38-cp38-win_amd64.whl", hash = "sha256:b7b20c88873675903d6438d8b33fba027997193e274b9367421e610d9da76c08"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:85e4c244e1de056d48dae466e9baf9437980c19fcde493e0db1a0a986e6d75b4"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79e73d5ee24196d3057340e356e6254af4d10e1fc22d3207ea8342fc5ffb977"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:15a03261aa1e68f208e71ae3cd845b00063d242cbf8c87348a0c2c0fc6e1f2ac"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ddc5e5ccc0160e7ad190e5c61eb57560f38559e22586955f205e537cda26034"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-win32.whl", hash = "sha256:289465162b1fa1e7a982f8abe59d26a8331211cad4942e8031d2b7db1f75e649"}, - {file = "SQLAlchemy-1.4.31-cp39-cp39-win_amd64.whl", hash = "sha256:9e4fb2895b83993831ba2401b6404de953fdbfa9d7d4fa6a4756294a83bbc94f"}, - {file = "SQLAlchemy-1.4.31.tar.gz", hash = "sha256:582b59d1e5780a447aada22b461e50b404a9dc05768da1d87368ad8190468418"}, + {file = "SQLAlchemy-1.4.32-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4b2bcab3a914715d332ca783e9bda13bc570d8b9ef087563210ba63082c18c16"}, + {file = "SQLAlchemy-1.4.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:159c2f69dd6efd28e894f261ffca1100690f28210f34cfcd70b895e0ea7a64f3"}, + {file = "SQLAlchemy-1.4.32-cp27-cp27m-win_amd64.whl", hash = "sha256:d7e483f4791fbda60e23926b098702340504f7684ce7e1fd2c1bf02029288423"}, + {file = "SQLAlchemy-1.4.32-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4aa96e957141006181ca58e792e900ee511085b8dae06c2d08c00f108280fb8a"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:576684771456d02e24078047c2567025f2011977aa342063468577d94e194b00"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fff677fa4522dafb5a5e2c0cf909790d5d367326321aeabc0dffc9047cb235bd"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8679f9aba5ac22e7bce54ccd8a77641d3aea3e2d96e73e4356c887ebf8ff1082"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7046f7aa2db445daccc8424f50b47a66c4039c9f058246b43796aa818f8b751"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-win32.whl", hash = "sha256:bedd89c34ab62565d44745212814e4b57ef1c24ad4af9b29c504ce40f0dc6558"}, + {file = "SQLAlchemy-1.4.32-cp310-cp310-win_amd64.whl", hash = "sha256:199dc6d0068753b6a8c0bd3aceb86a3e782df118260ebc1fa981ea31ee054674"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8e1e5d96b744a4f91163290b01045430f3f32579e46d87282449e5b14d27d4ac"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edfcf93fd92e2f9eef640b3a7a40db20fe3c1d7c2c74faa41424c63dead61b76"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04164e0063feb7aedd9d073db0fd496edb244be40d46ea1f0d8990815e4b8c34"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ba59761c19b800bc2e1c9324da04d35ef51e4ee9621ff37534bc2290d258f71"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-win32.whl", hash = "sha256:708973b5d9e1e441188124aaf13c121e5b03b6054c2df59b32219175a25aa13e"}, + {file = "SQLAlchemy-1.4.32-cp36-cp36m-win_amd64.whl", hash = "sha256:316270e5867566376e69a0ac738b863d41396e2b63274616817e1d34156dff0e"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:9a0195af6b9050c9322a97cf07514f66fe511968e623ca87b2df5e3cf6349615"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e4a3c0c3c596296b37f8427c467c8e4336dc8d50f8ed38042e8ba79507b2c9"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bca714d831e5b8860c3ab134c93aec63d1a4f493bed20084f54e3ce9f0a3bf99"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9a680d9665f88346ed339888781f5236347933906c5a56348abb8261282ec48"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-win32.whl", hash = "sha256:9cb5698c896fa72f88e7ef04ef62572faf56809093180771d9be8d9f2e264a13"}, + {file = "SQLAlchemy-1.4.32-cp37-cp37m-win_amd64.whl", hash = "sha256:8b9a395122770a6f08ebfd0321546d7379f43505882c7419d7886856a07caa13"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:3f88a4ee192142eeed3fe173f673ea6ab1f5a863810a9d85dbf6c67a9bd08f97"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd93162615870c976dba43963a24bb418b28448fef584f30755990c134a06a55"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a2e73508f939175363d8a4be9dcdc84cf16a92578d7fa86e6e4ca0e6b3667b2"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfec934aac7f9fa95fc82147a4ba5db0a8bdc4ebf1e33b585ab8860beb10232f"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-win32.whl", hash = "sha256:bb42f9b259c33662c6a9b866012f6908a91731a419e69304e1261ba3ab87b8d1"}, + {file = "SQLAlchemy-1.4.32-cp38-cp38-win_amd64.whl", hash = "sha256:7ff72b3cc9242d1a1c9b84bd945907bf174d74fc2519efe6184d6390a8df478b"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5dc9801ae9884e822ba942ca493642fb50f049c06b6dbe3178691fce48ceb089"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4607d2d16330757818c9d6fba322c2e80b4b112ff24295d1343a80b876eb0ed"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:20e9eba7fd86ef52e0df25bea83b8b518dfdf0bce09b336cfe51671f52aaaa3f"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:290cbdf19129ae520d4bdce392648c6fcdbee763bc8f750b53a5ab51880cb9c9"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-win32.whl", hash = "sha256:1bbac3e8293b34c4403d297e21e8f10d2a57756b75cff101dc62186adec725f5"}, + {file = "SQLAlchemy-1.4.32-cp39-cp39-win_amd64.whl", hash = "sha256:b3f1d9b3aa09ab9adc7f8c4b40fc3e081eb903054c9a6f9ae1633fe15ae503b4"}, + {file = "SQLAlchemy-1.4.32.tar.gz", hash = "sha256:6fdd2dc5931daab778c2b65b03df6ae68376e028a3098eb624d0909d999885bc"}, ] sqlalchemy2-stubs = [ - {file = "sqlalchemy2-stubs-0.0.2a19.tar.gz", hash = "sha256:2117c48ce5acfe33bf9c9bfce2a981632d931949e68fa313aa5c2a3bc980ca7a"}, - {file = "sqlalchemy2_stubs-0.0.2a19-py3-none-any.whl", hash = "sha256:aac7dca77a2c49e5f0934976421d5e25ae4dc5e27db48c01e055f81caa1e3ead"}, + {file = "sqlalchemy2-stubs-0.0.2a20.tar.gz", hash = "sha256:3e96a5bb7d46a368c780ba57dcf2afbe2d3efdd75f7724ae7a859df0b0625f38"}, + {file = "sqlalchemy2_stubs-0.0.2a20-py3-none-any.whl", hash = "sha256:da31d0e30a2af2e5ad83dbce5738543a9f488089774f506de5ec7d28d425a202"}, ] sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, @@ -3395,21 +3214,17 @@ sqlmodel = [ starkbank-ecdsa = [ {file = "starkbank-ecdsa-2.0.3.tar.gz", hash = "sha256:73b62b1b3de54bbaa05dedb1a2d951c033432bb074de899e19d4a96a36b21df6"}, ] -starlette = [ - {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, - {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, -] tinydb = [ - {file = "tinydb-4.6.1-py3-none-any.whl", hash = "sha256:ac1fdae2a7d5d7e2ca915d2666e685d63982991827c5dd097b6be4a3b5822dbc"}, - {file = "tinydb-4.6.1.tar.gz", hash = "sha256:0d5400f5e5ae368a84d57cb234456f1cf70430fd39bcd77ccd568fea91ff2a4e"}, + {file = "tinydb-4.7.0-py3-none-any.whl", hash = "sha256:e2cdf6e2dad49813e9b5fceb3c7943387309a8738125fbff0b58d248a033f7a9"}, + {file = "tinydb-4.7.0.tar.gz", hash = "sha256:357eb7383dee6915f17b00596ec6dd2a890f3117bf52be28a4c516aeee581100"}, ] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] tomli = [ - {file = "tomli-2.0.0-py3-none-any.whl", hash = "sha256:b5bde28da1fed24b9bd1d4d2b8cba62300bfb4ec9a6187a957e8ddb9434c5224"}, - {file = "tomli-2.0.0.tar.gz", hash = "sha256:c292c34f58502a1eb2bbb9f5bbc9a5ebc37bee10ffb8c2d6bbdfa8eb13cc14e1"}, + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] tornado = [ {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, @@ -3466,13 +3281,9 @@ trio-websocket = [ {file = "trio-websocket-0.9.2.tar.gz", hash = "sha256:a3d34de8fac26023eee701ed1e7bf4da9a8326b61a62934ec9e53b64970fd8fe"}, {file = "trio_websocket-0.9.2-py3-none-any.whl", hash = "sha256:5b558f6e83cc20a37c3b61202476c5295d1addf57bd65543364e0337e37ed2bc"}, ] -typeguard = [ - {file = "typeguard-2.13.3-py3-none-any.whl", hash = "sha256:5e3e3be01e887e7eafae5af63d1f36c849aaa94e3a0112097312aabfa16284f1"}, - {file = "typeguard-2.13.3.tar.gz", hash = "sha256:00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4"}, -] typing-extensions = [ - {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, - {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] typing-inspect = [ {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, @@ -3483,17 +3294,9 @@ urllib3 = [ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, ] -uvicorn = [ - {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, - {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, -] -vaa = [ - {file = "vaa-0.2.1-py3-none-any.whl", hash = "sha256:8f638e47e633739f5fb2912d36c5c01f7d757ce9f9508745dcae1eb0b8f1778f"}, - {file = "vaa-0.2.1.tar.gz", hash = "sha256:55a4419d8b094aacffb82d748b09abe5ca35fe603675ebdab7571373e7d3bf8a"}, -] virtualenv = [ - {file = "virtualenv-20.13.0-py2.py3-none-any.whl", hash = "sha256:339f16c4a86b44240ba7223d0f93a7887c3ca04b5f9c8129da7958447d079b09"}, - {file = "virtualenv-20.13.0.tar.gz", hash = "sha256:d8458cf8d59d0ea495ad9b34c2599487f8a7772d796f9910858376d1600dd2dd"}, + {file = "virtualenv-20.13.3-py2.py3-none-any.whl", hash = "sha256:dd448d1ded9f14d1a4bfa6bfc0c5b96ae3be3f2d6c6c159b23ddcfd701baa021"}, + {file = "virtualenv-20.13.3.tar.gz", hash = "sha256:e9dd1a1359d70137559034c0f5433b34caf504af2dc756367be86a5a32967134"}, ] watchgod = [ {file = "watchgod-0.7-py3-none-any.whl", hash = "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7"}, @@ -3642,13 +3445,6 @@ yarl = [ {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, ] -z3-solver = [ - {file = "z3-solver-4.8.14.0.tar.gz", hash = "sha256:ded46ac020e319c03bb597433f451679294ae7adba0151b170fed0d4d973abbe"}, - {file = "z3_solver-4.8.14.0-py2.py3-none-macosx_10_16_x86_64.whl", hash = "sha256:042773b85b6fc8e5144f4c8ad7d23f1461086fcfdaf0029bc55f1f7d12ae9617"}, - {file = "z3_solver-4.8.14.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:363f16be972b7b4e498d837840e26165639c180c4b77a9f8c6b1ba90a338cce2"}, - {file = "z3_solver-4.8.14.0-py2.py3-none-win32.whl", hash = "sha256:f22e306e694d3bd749f17f9518c7c38013c89c89800ace31f9c412d0b1fd30c7"}, - {file = "z3_solver-4.8.14.0-py2.py3-none-win_amd64.whl", hash = "sha256:48f59fad7ed63b172c51ed74137307898a6b7dbc8a5074c0653f4914fe1ebe5f"}, -] zipp = [ {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, diff --git a/pyproject.toml b/pyproject.toml index 3b9f8c1a..efeed6e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,9 +42,6 @@ lorem-text = "^2.1" sqlmodel = "^0.0.6" # Geometry manipulation Shapely = "^1.8" -# Fastapi server -fastapi = "^0.70" -uvicorn = "^0.16" # Python JSON Web Token implementation PyJWT = "^2.3" # End to end tests - TODO Find alternative because the dependency tree is huge @@ -62,8 +59,6 @@ peewee = "^3.14" mongoengine = "^0.23" # Async mongoDB ODM beanie = "^1.8" -# Contracts https://github.com/life4/deal -deal = "^4.19" # Create sqlalchemy migrations alembic = "^1.7" # Load environment variables from .env file diff --git a/python_examples/examples/other/multiprocessing_example.py b/python_examples/examples/other/multiprocessing_example.py index 138973a6..b506282a 100644 --- a/python_examples/examples/other/multiprocessing_example.py +++ b/python_examples/examples/other/multiprocessing_example.py @@ -2,26 +2,15 @@ from multiprocessing import Pool from typing import List, Union -import deal - -@deal.pre(lambda number: isinstance(number, int) or isinstance(number, float) and -10**15 < number < 10**15) -@deal.post(lambda result: isinstance(result, (int, float))) -@deal.ensure(lambda number, result: number != result) def do_math(number: Union[int, float]) -> Union[int, float]: return number + 3 -@deal.pre(lambda number: isinstance(number, int) or isinstance(number, float) and -10**15 < number < 10**15) -@deal.post(lambda result: isinstance(result, (int, float))) -@deal.ensure(lambda number, result: number != result) async def do_math_async(number: Union[int, float]) -> Union[int, float]: return number + 3 -@deal.pre(lambda number: 0 <= number < 10**6) -@deal.post(lambda result: isinstance(result, int)) -@deal.ensure(lambda number, result: number <= result) def cpu_bound_summing(number: int) -> int: return sum(i * i for i in range(number + 1)) @@ -31,7 +20,6 @@ def cpu_bound_summing_custom(number: int): return sum(i * i for i in range(number + 1)) -@deal.pre(lambda numbers: 1 <= len(numbers) <= 10_000) def find_sums(numbers: List[int]) -> List[int]: # Run on a minimum of 4 processes / CPU cores # If set to None or ommited, it will be automatically calculated based on the hardware diff --git a/python_examples/examples/other/test_multiprocessing_example.py b/python_examples/examples/other/test_multiprocessing_example.py index 6601bf65..21947909 100644 --- a/python_examples/examples/other/test_multiprocessing_example.py +++ b/python_examples/examples/other/test_multiprocessing_example.py @@ -3,17 +3,11 @@ from typing import List -import deal import pytest from hypothesis import given, settings from hypothesis import strategies as st -from python_examples.examples.other.multiprocessing_example import cpu_bound_summing, do_math, do_math_async, find_sums - - -@deal.cases(do_math) -def test_do_math(case): - _result = case() +from python_examples.examples.other.multiprocessing_example import cpu_bound_summing, do_math_async, find_sums @given(st.one_of(st.integers(), st.floats(min_value=-10**15, max_value=10**15))) @@ -28,11 +22,6 @@ def test_fuzz_cpu_bound_summing(number): cpu_bound_summing(number=number) -@deal.cases(cpu_bound_summing) -def test_cpu_bound_summing(case): - _result = case() - - @settings(max_examples=10, deadline=1_000) @given(numbers=st.lists(st.integers(min_value=0, max_value=1_000), min_size=1, max_size=100)) def test_find_sums(numbers: List[int]): diff --git a/python_examples/examples/other/zip_unzip.py b/python_examples/examples/other/zip_unzip.py index 9aabd67c..90f1e1d9 100644 --- a/python_examples/examples/other/zip_unzip.py +++ b/python_examples/examples/other/zip_unzip.py @@ -1,14 +1,14 @@ import io from pathlib import Path from typing import Iterable -from zipfile import ZipFile, ZIP_DEFLATED +from zipfile import ZIP_DEFLATED, ZipFile from burny_common.path_manipulation import recurse_path def zip_multiple_files(file_paths: Iterable[Path]) -> bytes: zip_buffer = io.BytesIO() - with ZipFile(zip_buffer, "w", ZIP_DEFLATED, False) as zipfile_handler: + with ZipFile(zip_buffer, 'w', ZIP_DEFLATED, False) as zipfile_handler: for file_path in file_paths: file_name = file_path.name with file_path.open() as f: @@ -19,13 +19,13 @@ def zip_multiple_files(file_paths: Iterable[Path]) -> bytes: def unzip_multiple_files(data: bytes, target_folder: Path) -> None: - zip = ZipFile(io.BytesIO(data)) - zip.extractall(target_folder) + with ZipFile(io.BytesIO(data)) as zip_file: + zip_file.extractall(target_folder) def main(): this_folder_path = Path(__file__).parent - temp_path = this_folder_path / "temp" + temp_path = this_folder_path / 'temp' zipped = zip_multiple_files(recurse_path( this_folder_path, depth=1, diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index 28b96409..b527ee7e 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -2,7 +2,7 @@ "name": "my-app", "version": "0.0.1", "scripts": { - "dev": "cross-env BACKEND_SERVER='localhost:8000' svelte-kit dev", + "dev": "cross-env BACKEND_SERVER='localhost:8000' SC2ACCOUNTSDB='sc2accounts_dev' svelte-kit dev", "build": "svelte-kit build", "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", diff --git a/supabase_stream_scripts/src/functions/constants.ts b/supabase_stream_scripts/src/functions/constants.ts index 87879bf1..3d77fdbe 100644 --- a/supabase_stream_scripts/src/functions/constants.ts +++ b/supabase_stream_scripts/src/functions/constants.ts @@ -11,6 +11,7 @@ export const supabase = createClient( "https://xplbweeaklyxixlugeju.supabase.co", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InhwbGJ3ZWVha2x5eGl4bHVnZWp1Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2NDUwMzUwMTcsImV4cCI6MTk2MDYxMTAxN30.PPa4MEwdlaSQovk5lyKqIyxsxp7ujYqjlNGMsctho8k" ) +export const sc2AccountsDb = process.env.SC2ACCOUNTSDB || "sc2accounts" export const races = ["Protoss", "Terran", "Zerg", "Random"] export const servers = ["Europe", "Americas", "Asia", "China"] diff --git a/supabase_stream_scripts/src/pages/About.svelte b/supabase_stream_scripts/src/pages/About.svelte index 5a566d3c..f3fc816f 100644 --- a/supabase_stream_scripts/src/pages/About.svelte +++ b/supabase_stream_scripts/src/pages/About.svelte @@ -1,7 +1,8 @@ -{#if runningData.scene === "game"} +{#if runningData.scene === "game" || dev}
SC2 Info
diff --git a/supabase_stream_scripts/src/pages/StreamManager.svelte b/supabase_stream_scripts/src/pages/StreamManager.svelte index e767af5c..c068e0cb 100644 --- a/supabase_stream_scripts/src/pages/StreamManager.svelte +++ b/supabase_stream_scripts/src/pages/StreamManager.svelte @@ -1,7 +1,8 @@ @@ -154,146 +163,152 @@ {/if}
-
- - -
-
Your match info overlay link
- + {#if twitchUser !== null} +
+ + +
+
Your match info overlay link
+ + {/each} - - - - - {/each} +
-
+ {/if} -
-
- -
Enabled
+ {#if dev} +
+
+ +
Enabled
+
+
+
Game scene
+ +
Menu scene
+ +
Replay scene
+ +
-
-
Game scene
- -
Menu scene
- -
Replay scene
- -
-
+ {/if}
From cfb1ae686bfc0b4bce8261c18db86d1922982775 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:16:00 +0100 Subject: [PATCH 002/391] Update pyproject.toml --- fastapi_server/poetry.lock | 161 ++++++++++++++++++++++++++++++++-- fastapi_server/pyproject.toml | 17 +++- 2 files changed, 168 insertions(+), 10 deletions(-) diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock index f8d1a3b7..70e66b43 100644 --- a/fastapi_server/poetry.lock +++ b/fastapi_server/poetry.lock @@ -48,6 +48,25 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + [[package]] name = "click" version = "8.0.4" @@ -109,6 +128,34 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "hypothesis" +version = "6.39.3" +description = "A library for property-based testing" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +sortedcontainers = ">=2.1.0,<3.0.0" + +[package.extras] +all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] +cli = ["click (>=7.0)", "black (>=19.10b0)", "rich (>=9.0.0)"] +codemods = ["libcst (>=0.3.16)"] +dateutil = ["python-dateutil (>=1.4)"] +django = ["django (>=2.2)"] +dpcontracts = ["dpcontracts (>=0.4)"] +ghostwriter = ["black (>=19.10b0)"] +lark = ["lark-parser (>=0.6.5)"] +numpy = ["numpy (>=1.9.0)"] +pandas = ["pandas (>=0.25)"] +pytest = ["pytest (>=4.6)"] +pytz = ["pytz (>=2014.1)"] +redis = ["redis (>=3.0.0)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] + [[package]] name = "idna" version = "3.3" @@ -232,7 +279,7 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "6.2.5" +version = "7.0.1" description = "pytest: simple powerful testing with Python" category = "dev" optional = false @@ -246,10 +293,10 @@ iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" py = ">=1.8.2" -toml = "*" +tomli = ">=1.0.0" [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [[package]] name = "pytest-asyncio" @@ -265,6 +312,35 @@ pytest = ">=5.4.0" [package.extras] testing = ["coverage", "hypothesis (>=5.7.1)"] +[[package]] +name = "python-dotenv" +version = "0.19.2" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + [[package]] name = "sniffio" version = "1.2.0" @@ -273,6 +349,14 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "starlette" version = "0.16.0" @@ -295,6 +379,14 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "typing-extensions" version = "4.1.1" @@ -315,6 +407,19 @@ python-versions = "*" mypy-extensions = ">=0.3.0" typing-extensions = ">=3.7.4" +[[package]] +name = "urllib3" +version = "1.26.8" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + [[package]] name = "uvicorn" version = "0.16.0" @@ -342,10 +447,18 @@ python-versions = ">=3.5" [package.extras] dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] +[[package]] +name = "yapf" +version = "0.32.0" +description = "A formatter for Python code." +category = "dev" +optional = false +python-versions = "*" + [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "ee192a973a967b7110d33679f6bf84d0ea1d5aba1a4b35dec0d378b94a4970bb" +content-hash = "aff4edcc16e9c7b81b91ab6afb1556f79261d78bbc1b897cb00412f8178e7a6f" [metadata.files] anyio = [ @@ -364,6 +477,14 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] click = [ {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, @@ -384,6 +505,10 @@ h11 = [ {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] +hypothesis = [ + {file = "hypothesis-6.39.3-py3-none-any.whl", hash = "sha256:92f1c58e994e109897fd9b3c6d44eb3bd45ed95bf3c079c35f36fa0801fc5f31"}, + {file = "hypothesis-6.39.3.tar.gz", hash = "sha256:f496dd053fb951b6da9611481fb4e54eeab1d37b594da5efe869083fad3ae621"}, +] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -462,17 +587,29 @@ pyparsing = [ {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, + {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, ] pytest-asyncio = [ {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, ] +python-dotenv = [ + {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"}, + {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, +] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, ] +sortedcontainers = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] starlette = [ {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, @@ -481,6 +618,10 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] typing-extensions = [ {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, @@ -490,6 +631,10 @@ typing-inspect = [ {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, ] +urllib3 = [ + {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, + {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, +] uvicorn = [ {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, @@ -498,3 +643,7 @@ win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ] +yapf = [ + {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, + {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, +] diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index df6df2ae..3ab01ef1 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -2,7 +2,7 @@ name = "fastapi_server" version = "0.1.0" description = "" -authors = ["BurnySc2 "] +authors = ["BuRny "] [tool.poetry.dependencies] python = ">=3.8 <3.11" @@ -10,16 +10,25 @@ python = ">=3.8 <3.11" dataclasses-json = "^0.5" # Fastapi server fastapi = "^0.70" +starlette = "^0.16.0" uvicorn = "^0.16" -# Simple logger -loguru = "^0.5" # Somehow required colorama = "^0.4.4" +# Simple logger +loguru = "^0.5" +# Network interaction +requests = "^2.27.1" +# Local .env file +python-dotenv = "^0.19.2" [tool.poetry.dev-dependencies] # Test library -pytest = "^6.2" +pytest = "^7.0.1" pytest-asyncio = "^0.16" +hypothesis = "^6.39.3" +# Autoformatter +yapf = "^0.32" +toml = "^0.10.2" [build-system] requires = ["poetry-core>=1.0.0"] From 853d19f7359b94ccf253f5202eb587fad1a724f9 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:18:18 +0100 Subject: [PATCH 003/391] Fix cd --- .github/workflows/test_fastapi_server.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 06c49596..03c5c29d 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -96,7 +96,7 @@ jobs: key: ${{ secrets.FASTAPISERVERKEY }} passphrase: '' script: | - cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}/fastapiserver" + cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}/fastapi_server" poetry install --no-dev cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.SERVICENAME }}.service" "/etc/systemd/system/${{ env.SERVICENAME }}.service" sudo /bin/systemctl daemon-reload From 8eb83f4be4f55b46804501d1e96711a48e9a3581 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:21:09 +0100 Subject: [PATCH 004/391] Fix copy command --- .github/workflows/test_fastapi_server.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 03c5c29d..6e3d5bb9 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -98,6 +98,6 @@ jobs: script: | cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}/fastapi_server" poetry install --no-dev - cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.SERVICENAME }}.service" "/etc/systemd/system/${{ env.SERVICENAME }}.service" + cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" sudo /bin/systemctl daemon-reload - sudo /bin/systemctl enable --now ${{ env.SERVICENAME }} + sudo /bin/systemctl enable --now ${{ env.USERNAME }} From a45102196da024a95d67c0ee0fefe860402dceba Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:23:39 +0100 Subject: [PATCH 005/391] Fix systemd file --- fastapi_server/systemd/fastapiserver.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi_server/systemd/fastapiserver.service b/fastapi_server/systemd/fastapiserver.service index 98ea906d..55aa8b2a 100644 --- a/fastapi_server/systemd/fastapiserver.service +++ b/fastapi_server/systemd/fastapiserver.service @@ -1,5 +1,5 @@ [Service] -ExecStart=/usr/local/bin/poetry poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 +ExecStart=/usr/local/bin/poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 Restart=always RestartSec=20 SyslogIdentifier=fastapiserver From 664909d0b7a16c32d964351a9490da59502cd563 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 00:33:13 +0100 Subject: [PATCH 006/391] Copy subfolder poetry files to main folder --- .github/workflows/test_fastapi_server.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 6e3d5bb9..2ba94a09 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -56,6 +56,7 @@ jobs: needs: [test_backend] env: USERNAME: fastapiserver + SUBDIRECTORY: fastapi_server if: github.ref == 'refs/heads/develop' steps: @@ -96,7 +97,9 @@ jobs: key: ${{ secrets.FASTAPISERVERKEY }} passphrase: '' script: | - cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}/fastapi_server" + cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" + cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock + cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml poetry install --no-dev cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" sudo /bin/systemctl daemon-reload From d2bd1acb40985f930d51c480e04b89ef6a60e53d Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 14:19:23 +0100 Subject: [PATCH 007/391] Modify hello world --- fastapi_server/routes/hello_world.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi_server/routes/hello_world.py b/fastapi_server/routes/hello_world.py index 5b46766d..f930620c 100644 --- a/fastapi_server/routes/hello_world.py +++ b/fastapi_server/routes/hello_world.py @@ -8,7 +8,7 @@ @hello_world_router.get('/') def hello_world(): - return {'Hello': 'World'} + return {'Hello': 'World2'} async def background_task_function(my_text: str, other_text: str = ' something!'): From 0571d33560df31c6ebecb74c5490ab6bcd3de498 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Wed, 9 Mar 2022 14:20:52 +0100 Subject: [PATCH 008/391] Fix tests --- fastapi_server/test/endpoints_test/test_hello_world.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi_server/test/endpoints_test/test_hello_world.py b/fastapi_server/test/endpoints_test/test_hello_world.py index 6ff59324..e930094a 100644 --- a/fastapi_server/test/endpoints_test/test_hello_world.py +++ b/fastapi_server/test/endpoints_test/test_hello_world.py @@ -8,4 +8,4 @@ def test_hello_world(): response = client.get('/') assert response.status_code == 200 - assert response.json() == {'Hello': 'World'} + assert response.json() == {'Hello': 'World2'} From 037e97420f0c90ce901fce24be178eb6952d206c Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Thu, 10 Mar 2022 08:23:09 +0100 Subject: [PATCH 009/391] Fix svelte integration tests --- .github/workflows/test_fastapi_server.yml | 1 + burny_common/integration_test_helper.py | 10 +- fastapi_server/main.py | 15 +- fastapi_server/routes/hello_world.py | 2 +- .../test/endpoints_test/test_hello_world.py | 2 +- poetry.lock | 128 ++++++++++++++---- pyproject.toml | 5 +- .../test_frontend/test_integration.py | 2 +- 8 files changed, 119 insertions(+), 46 deletions(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 2ba94a09..3d73a3ce 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -100,6 +100,7 @@ jobs: cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml + echo -e "STAGE=prod\n" > .env poetry install --no-dev cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" sudo /bin/systemctl daemon-reload diff --git a/burny_common/integration_test_helper.py b/burny_common/integration_test_helper.py index 22b3d22b..952bdfe9 100644 --- a/burny_common/integration_test_helper.py +++ b/burny_common/integration_test_helper.py @@ -130,18 +130,10 @@ def start_svelte_dev_server( def start_fastapi_dev_server( port: int, NEWLY_CREATED_PROCESSES: Set[int], - CREATED_FILES: Set[Path], ): root_folder = Path(__file__).parents[1] - backend_folder = root_folder / 'fastapi_server' currently_running_uvicorn_processes = get_pid('uvicorn') env = os.environ.copy() - env['DATABASE_USE_MEMORY'] = 'TRUE' - - sqlite_test_file_name = 'todos_TEST.db' - sqlite_test_file_path = backend_folder / 'data' / sqlite_test_file_name - CREATED_FILES.add(sqlite_test_file_path) - remove_leftover_files({sqlite_test_file_path}) # Why does this return errors even when fastapi server is not running # assert is_port_free(port), f"Unable to start fastapi server because port {port} is blocked" @@ -279,6 +271,6 @@ def kill_processes(processes: Set[int]): free_frontend_port = find_next_free_port() free_backend_port = find_next_free_port(exclude_ports={free_frontend_port}) start_svelte_dev_server(free_frontend_port, set(), backend_proxy=f'localhost:{free_backend_port}') - start_fastapi_dev_server(free_backend_port, set(), set()) + start_fastapi_dev_server(free_backend_port, set()) while 1: time.sleep(1) diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 4f271888..a76e3353 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -10,11 +10,6 @@ from fastapi_server.routes.hello_world import hello_world_router from fastapi_server.routes.todolist import todo_list_router -app = FastAPI() -app.include_router(hello_world_router) -app.include_router(chat_router) -app.include_router(todo_list_router) - env_path = Path(__file__).parent / '.env' if not env_path.is_file(): logger.info( @@ -22,11 +17,17 @@ STAGE=dev""" ) -config: dict = dotenv_values('.env') +config: dict = dotenv_values(env_path) + +app = FastAPI() +app.include_router(hello_world_router) origins = ['https://burnysc2.github.io'] -if config.get('STAGE', '') == 'dev': +if config.get('STAGE', '') != 'prod': + logger.info("Starting in 'STAGE == dev' mode") origins += [f'http://localhost:{i}' for i in range(1, 2**16)] + app.include_router(todo_list_router) + app.include_router(chat_router) app.add_middleware( CORSMiddleware, diff --git a/fastapi_server/routes/hello_world.py b/fastapi_server/routes/hello_world.py index f930620c..5b46766d 100644 --- a/fastapi_server/routes/hello_world.py +++ b/fastapi_server/routes/hello_world.py @@ -8,7 +8,7 @@ @hello_world_router.get('/') def hello_world(): - return {'Hello': 'World2'} + return {'Hello': 'World'} async def background_task_function(my_text: str, other_text: str = ' something!'): diff --git a/fastapi_server/test/endpoints_test/test_hello_world.py b/fastapi_server/test/endpoints_test/test_hello_world.py index e930094a..6ff59324 100644 --- a/fastapi_server/test/endpoints_test/test_hello_world.py +++ b/fastapi_server/test/endpoints_test/test_hello_world.py @@ -8,4 +8,4 @@ def test_hello_world(): response = client.get('/') assert response.status_code == 200 - assert response.json() == {'Hello': 'World2'} + assert response.json() == {'Hello': 'World'} diff --git a/poetry.lock b/poetry.lock index fb863e9b..ebe411bd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -54,6 +54,23 @@ SQLAlchemy = ">=1.3.0" [package.extras] tz = ["python-dateutil"] +[[package]] +name = "anyio" +version = "3.5.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] + [[package]] name = "appnope" version = "0.1.2" @@ -62,6 +79,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "asgiref" +version = "3.5.0" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + [[package]] name = "astroid" version = "2.9.3" @@ -359,6 +387,24 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] testing = ["pre-commit"] +[[package]] +name = "fastapi" +version = "0.70.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +starlette = "0.16.0" + +[package.extras] +all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] + [[package]] name = "fasteners" version = "0.16.3" @@ -1056,20 +1102,6 @@ category = "main" optional = false python-versions = ">=3.5" -[[package]] -name = "pyjwt" -version = "2.3.0" -description = "JSON Web Token implementation in Python" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -crypto = ["cryptography (>=3.3.1)"] -dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] - [[package]] name = "pylint" version = "2.12.2" @@ -1333,7 +1365,7 @@ cli = ["click (>=5.0)"] [[package]] name = "python-http-client" -version = "3.3.6" +version = "3.3.7" description = "HTTP REST client, simplified for Python" category = "main" optional = false @@ -1518,7 +1550,7 @@ flake = ["flake8 (==3.7.9)", "pyflakes (==2.1.1)", "pycodestyle (==2.5.0)", "fla [[package]] name = "sendgrid" -version = "6.9.6" +version = "6.9.7" description = "Twilio SendGrid library for Python" category = "main" optional = false @@ -1664,6 +1696,20 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "starlette" +version = "0.16.0" +description = "The little ASGI library that shines." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +anyio = ">=3.0.0,<4" + +[package.extras] +full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] + [[package]] name = "tinydb" version = "4.7.0" @@ -1776,6 +1822,22 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "uvicorn" +version = "0.16.0" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +asgiref = ">=3.4.0" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "websockets (>=9.1)", "websockets (>=10.0)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + [[package]] name = "virtualenv" version = "20.13.3" @@ -1875,7 +1937,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "3f313fce030cc91c00bc13acb55713a90f7b17f08ad6ab25f3313d779ded5254" +content-hash = "360676a607de9cdf3002f4458c6c7740945abe84282732a964cd5591716268b9" [metadata.files] aiocontextvars = [ @@ -1964,10 +2026,18 @@ alembic = [ {file = "alembic-1.7.6-py3-none-any.whl", hash = "sha256:ad842f2c3ab5c5d4861232730779c05e33db4ba880a08b85eb505e87c01095bc"}, {file = "alembic-1.7.6.tar.gz", hash = "sha256:6c0c05e9768a896d804387e20b299880fe01bc56484246b0dffe8075d6d3d847"}, ] +anyio = [ + {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, + {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, +] appnope = [ {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, ] +asgiref = [ + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] astroid = [ {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, @@ -2189,6 +2259,10 @@ execnet = [ {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, ] +fastapi = [ + {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, + {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, +] fasteners = [ {file = "fasteners-0.16.3-py2.py3-none-any.whl", hash = "sha256:8408e52656455977053871990bd25824d85803b9417aa348f10ba29ef0c751f7"}, {file = "fasteners-0.16.3.tar.gz", hash = "sha256:b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de"}, @@ -2836,10 +2910,6 @@ pygments = [ {file = "Pygments-2.11.1-py3-none-any.whl", hash = "sha256:9135c1af61eec0f650cd1ea1ed8ce298e54d56bcd8cc2ef46edd7702c171337c"}, {file = "Pygments-2.11.1.tar.gz", hash = "sha256:59b895e326f0fb0d733fd28c6839bd18ad0687ba20efc26d4277fd1d30b971f4"}, ] -pyjwt = [ - {file = "PyJWT-2.3.0-py3-none-any.whl", hash = "sha256:e0c4bb8d9f0af0c7f5b1ec4c5036309617d03d56932877f2f7a0beeb5318322f"}, - {file = "PyJWT-2.3.0.tar.gz", hash = "sha256:b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41"}, -] pylint = [ {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"}, {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"}, @@ -3031,8 +3101,8 @@ python-dotenv = [ {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, ] python-http-client = [ - {file = "python_http_client-3.3.6-py3-none-any.whl", hash = "sha256:5a005aecf0f56b2247582c16a917ccd585d9973a9d6d9ebc228527f42102ee4d"}, - {file = "python_http_client-3.3.6.tar.gz", hash = "sha256:7d621aef781b66e1cfe942a9cd4fa5ad86d3ecd4d5d8110d3c75b3175d71fe38"}, + {file = "python_http_client-3.3.7-py3-none-any.whl", hash = "sha256:ad371d2bbedc6ea15c26179c6222a78bc9308d272435ddf1d5c84f068f249a36"}, + {file = "python_http_client-3.3.7.tar.gz", hash = "sha256:bf841ee45262747e00dec7ee9971dfb8c7d83083f5713596488d67739170cea0"}, ] pytzdata = [ {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, @@ -3111,8 +3181,8 @@ seleniumbase = [ {file = "seleniumbase-2.3.6.tar.gz", hash = "sha256:658bd64700f3203f75e12510da8c8ee88a96fd57abd07fab26a7df7068fb38ad"}, ] sendgrid = [ - {file = "sendgrid-6.9.6-py3-none-any.whl", hash = "sha256:368d5d6bac0e044049b2e63ddc584604a9a5f3ff554e906a980726bd46eee2ea"}, - {file = "sendgrid-6.9.6.tar.gz", hash = "sha256:39afb97a57f3b29224a38ecb2ddde242dc624014001100b1c72226cefa4fa7b2"}, + {file = "sendgrid-6.9.7-py3-none-any.whl", hash = "sha256:ba8d3d39e1f392b9434365d53983b2fc6a458ae0496d2d9e103c15e1743ab66b"}, + {file = "sendgrid-6.9.7.tar.gz", hash = "sha256:fa30411c627690fecd0ef6b1d4e1783f2d0272aa14b5fffb133ebd1e31114f16"}, ] setuptools-scm = [ {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, @@ -3214,6 +3284,10 @@ sqlmodel = [ starkbank-ecdsa = [ {file = "starkbank-ecdsa-2.0.3.tar.gz", hash = "sha256:73b62b1b3de54bbaa05dedb1a2d951c033432bb074de899e19d4a96a36b21df6"}, ] +starlette = [ + {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, + {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, +] tinydb = [ {file = "tinydb-4.7.0-py3-none-any.whl", hash = "sha256:e2cdf6e2dad49813e9b5fceb3c7943387309a8738125fbff0b58d248a033f7a9"}, {file = "tinydb-4.7.0.tar.gz", hash = "sha256:357eb7383dee6915f17b00596ec6dd2a890f3117bf52be28a4c516aeee581100"}, @@ -3294,6 +3368,10 @@ urllib3 = [ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, ] +uvicorn = [ + {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, + {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, +] virtualenv = [ {file = "virtualenv-20.13.3-py2.py3-none-any.whl", hash = "sha256:dd448d1ded9f14d1a4bfa6bfc0c5b96ae3be3f2d6c6c159b23ddcfd701baa021"}, {file = "virtualenv-20.13.3.tar.gz", hash = "sha256:e9dd1a1359d70137559034c0f5433b34caf504af2dc756367be86a5a32967134"}, diff --git a/pyproject.toml b/pyproject.toml index efeed6e6..68617939 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,8 +42,9 @@ lorem-text = "^2.1" sqlmodel = "^0.0.6" # Geometry manipulation Shapely = "^1.8" -# Python JSON Web Token implementation -PyJWT = "^2.3" +# Fastapi server +fastapi = "^0.70" +uvicorn = "^0.16" # End to end tests - TODO Find alternative because the dependency tree is huge seleniumbase = "^2.3" # Info about the system diff --git a/svelte_frontend/test_frontend/test_integration.py b/svelte_frontend/test_frontend/test_integration.py index e8c4db0d..a28d1cee 100644 --- a/svelte_frontend/test_frontend/test_integration.py +++ b/svelte_frontend/test_frontend/test_integration.py @@ -35,7 +35,7 @@ def setup_method(self, _method=None): free_backend_port = find_next_free_port(exclude_ports={free_frontend_port}) self.FRONTEND_ADDRESS = get_website_address(free_frontend_port) self.BACKEND_ADDRESS = f'http://localhost:{free_backend_port}' - start_fastapi_dev_server(free_backend_port, self.NEWLY_CREATED_PROCESSES, self.CREATED_FILES) + start_fastapi_dev_server(free_backend_port, self.NEWLY_CREATED_PROCESSES) start_svelte_dev_server( free_frontend_port, self.NEWLY_CREATED_PROCESSES, From 05606bd66f523f60a34bbd431fe36669fc6c5e79 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sun, 13 Mar 2022 18:55:50 +0100 Subject: [PATCH 010/391] Add replay comparer --- .pre-commit-config.yaml | 11 +- fastapi_server/main.py | 2 + fastapi_server/poetry.lock | 68 +- fastapi_server/pyproject.toml | 2 + fastapi_server/routes/replay_parser.py | 84 + .../replays/TvZ Standard Bio.SC2Replay | Bin 0 -> 62154 bytes .../test/endpoints_test/test_replay_parser.py | 21 + replay_comparer/.eslintrc.cjs | 20 + replay_comparer/.prettierrc | 12 + replay_comparer/README.md | 100 + replay_comparer/package-lock.json | 15516 ++ replay_comparer/package.json | 43 + replay_comparer/src/app.html | 13 + .../src/components/ReplayComparison.svelte | 166 + replay_comparer/src/functions/constants.ts | 0 .../src/functions/fake_replay_data.ts | 111409 +++++++++++++++ replay_comparer/src/functions/interfaces.ts | 0 replay_comparer/src/global.d.ts | 1 + replay_comparer/src/pages/Home.svelte | 88 + replay_comparer/src/routes/index.svelte | 33 + replay_comparer/static/favicon.png | Bin 0 -> 1571 bytes replay_comparer/svelte.config.js | 31 + 22 files changed, 127617 insertions(+), 3 deletions(-) create mode 100644 fastapi_server/routes/replay_parser.py create mode 100644 fastapi_server/test/endpoints_test/replays/TvZ Standard Bio.SC2Replay create mode 100644 fastapi_server/test/endpoints_test/test_replay_parser.py create mode 100644 replay_comparer/.eslintrc.cjs create mode 100644 replay_comparer/.prettierrc create mode 100644 replay_comparer/README.md create mode 100644 replay_comparer/package-lock.json create mode 100644 replay_comparer/package.json create mode 100644 replay_comparer/src/app.html create mode 100644 replay_comparer/src/components/ReplayComparison.svelte create mode 100644 replay_comparer/src/functions/constants.ts create mode 100644 replay_comparer/src/functions/fake_replay_data.ts create mode 100644 replay_comparer/src/functions/interfaces.ts create mode 100644 replay_comparer/src/global.d.ts create mode 100644 replay_comparer/src/pages/Home.svelte create mode 100644 replay_comparer/src/routes/index.svelte create mode 100644 replay_comparer/static/favicon.png create mode 100644 replay_comparer/svelte.config.js diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 74d8bf0c..c6e9a82d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -114,13 +114,20 @@ repos: entry: bash -c "cd svelte_frontend && npm run format" pass_filenames: false - - id: supabase_stream_scripts - name: supabase_stream_scripts + - id: format_supabase_stream_scripts + name: format_supabase_stream_scripts stages: [commit] language: system entry: bash -c "cd supabase_stream_scripts && npm run format" pass_filenames: false + - id: format_replay_comparer + name: format_replay_comparer + stages: [commit] + language: system + entry: bash -c "cd replay_comparer && npm run format" + pass_filenames: false + - id: pylint name: pylint stages: [commit] diff --git a/fastapi_server/main.py b/fastapi_server/main.py index a76e3353..5a0361ce 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -8,6 +8,7 @@ from fastapi_server.routes.chat import chat_router from fastapi_server.routes.hello_world import hello_world_router +from fastapi_server.routes.replay_parser import replay_parser_router from fastapi_server.routes.todolist import todo_list_router env_path = Path(__file__).parent / '.env' @@ -21,6 +22,7 @@ app = FastAPI() app.include_router(hello_world_router) +app.include_router(replay_parser_router) origins = ['https://burnysc2.github.io'] if config.get('STAGE', '') != 'prod': diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock index 70e66b43..235b62e5 100644 --- a/fastapi_server/poetry.lock +++ b/fastapi_server/poetry.lock @@ -212,6 +212,14 @@ python-versions = "*" [package.dependencies] marshmallow = ">=2.0.0" +[[package]] +name = "mpyq" +version = "0.2.5" +description = "A Python library for extracting MPQ (MoPaQ) files." +category = "main" +optional = false +python-versions = "*" + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -323,6 +331,25 @@ python-versions = ">=3.5" [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-multipart" +version = "0.0.5" +description = "A streaming multipart parser for Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.4.0" + +[[package]] +name = "pytz" +version = "2021.3" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "requests" version = "2.27.1" @@ -341,6 +368,14 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + [[package]] name = "sniffio" version = "1.2.0" @@ -455,10 +490,23 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "zephyrus-sc2-parser" +version = "0.3.7" +description = "Parser for SC2 replay files" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +mpyq = "*" +pytz = "*" +requests = "*" + [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "aff4edcc16e9c7b81b91ab6afb1556f79261d78bbc1b897cb00412f8178e7a6f" +content-hash = "6e8768ec859cf5177b80eec5ea4a4684b7c4530e8a1cfd82f2ec962776a7c45a" [metadata.files] anyio = [ @@ -529,6 +577,9 @@ marshmallow-enum = [ {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, ] +mpyq = [ + {file = "mpyq-0.2.5.tar.gz", hash = "sha256:30aaf5962be569f3f2b53978060cd047434ee4f5a215925dd6ff0fef04ec0007"}, +] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, @@ -598,10 +649,21 @@ python-dotenv = [ {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"}, {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, ] +python-multipart = [ + {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, +] +pytz = [ + {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, + {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, +] requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, @@ -647,3 +709,7 @@ yapf = [ {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, ] +zephyrus-sc2-parser = [ + {file = "zephyrus-sc2-parser-0.3.7.tar.gz", hash = "sha256:384b3f20b456154fc9048d5350651fd08c4ffbfe8eabe1eaf0959c09a23d8452"}, + {file = "zephyrus_sc2_parser-0.3.7-py3-none-any.whl", hash = "sha256:4b1a5df798257c650606fefdb4d5aba1aa3aee9984bfe072071a5ead1cd0949e"}, +] diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index 3ab01ef1..b9e5a0cb 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -20,6 +20,8 @@ loguru = "^0.5" requests = "^2.27.1" # Local .env file python-dotenv = "^0.19.2" +zephyrus-sc2-parser = "^0.3.7" +python-multipart = "^0.0.5" [tool.poetry.dev-dependencies] # Test library diff --git a/fastapi_server/routes/replay_parser.py b/fastapi_server/routes/replay_parser.py new file mode 100644 index 00000000..279d6d19 --- /dev/null +++ b/fastapi_server/routes/replay_parser.py @@ -0,0 +1,84 @@ +from dataclasses import dataclass +from typing import Dict, List, Union + +from fastapi import File, Form, UploadFile +from fastapi.routing import APIRouter +from zephyrus_sc2_parser import parse_replay +from zephyrus_sc2_parser.dataclasses import Resource +from zephyrus_sc2_parser.game import Player + +replay_parser_router = APIRouter() + + +@dataclass +class RequestBody: + replay_tick: int = 112 + + +# pylint: disable=R0902 +@dataclass +class ParserPlayer: + name: str + race: str + supply_block: int + army_value: Dict[Resource, List[int]] + collection_rate: Dict[Resource, List[int]] + unspent_resources: Dict[Resource, List[int]] + upgrades: List[Dict[str, Union[str, int]]] + queues: List[dict] + + @staticmethod + def from_replay_object(player_object: Player): + return ParserPlayer( + name=player_object.name, + race=player_object.race, + supply_block=player_object.supply_block, + army_value=player_object.army_value, + collection_rate=player_object.collection_rate, + unspent_resources=player_object.unspent_resources, + upgrades=[ + { + 'name': upgrade.name, + 'completed_at': upgrade.completed_at, + } for upgrade in player_object.upgrades + ], + queues=[ + { + 'gameloop': + queue['gameloop'], + 'supply_blocked': + queue['supply_blocked'], + 'queues': [ + { + 'structure_name': + structure.name, + 'structure_queue': + [{ + 'name': structure_queue_item.name, + } for structure_queue_item in structure_queue] + } for structure, structure_queue in queue['queues'].items() + ] + } for queue in player_object.queues + ], + ) + + +@replay_parser_router.post('/parse_replay') +async def parse_replay_endpoint(replay_tick: float = Form(112), replay_file: UploadFile = File(...)): + # async def parse_replay_endpoint(replay_tick: float = Form(112)): + replay_tick = max(20, int(round(replay_tick))) + # https://fastapi.tiangolo.com/tutorial/request-files/#uploadfile + players, timeline, _engagements, summary, metadata = parse_replay( + replay_file.file, local=True, tick=replay_tick, network=True + ) + + player1 = ParserPlayer.from_replay_object(players[1]) + player2 = ParserPlayer.from_replay_object(players[2]) + + return { + 'metadata': metadata, + 'summary': summary, + 'timeline': timeline, + 'player1': player1, + 'player2': player2, + } diff --git a/fastapi_server/test/endpoints_test/replays/TvZ Standard Bio.SC2Replay b/fastapi_server/test/endpoints_test/replays/TvZ Standard Bio.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..0354e500d440ade1b2188674babc9cfa913cae92 GIT binary patch literal 62154 zcmeFYRd5{5wl&ylNo}>5EM{hAvY45fnJs2!W@ct4i&+*kTWGNb7Ne!{ckkS}=l|oz zJj}yHOw3sixwCfeTG_FCN3F`tC^01*B4q5N;Zq3V3Pyc_livMRv_`m#u06=fv z&R2r+*O=HkrB_;M`w>rX<~VNF5T7!{4U1<*NbUc+_rEN~#gG_p!O$o!{H@R(9^tlV zJ?|7CVz;(X^AL&ID6Q_duB7_T^h9SoAV4ckQ$hT{?)$g>cLx5Qf&c$y0GbQ{1p$D9 z#sC1BC~RGLCC!{1%$zAKTzL7M9T^3LU6t)UfzU7jFck0;0HDGG1qQ-^vraUjfbgnj zPEJPlpnnG6A%Wl%AQYGi1m=SQL&1Up@Zj$dh+qIR7>Ei50S2H00sl-vCd44cK*UT$ zrEccrNhD_E>`DC}aBL3?RfdKuT0|pF&1q1&tW~hId zfq$8SKnfNnCMF^w7dr=MM@us&GiM@MF(@Da1pRjqL(a<=p8) zb#>wzBs@5vpg1Q6hzJBA0|BT&0Q%olAOaPgS?r7e05LVYgU^tiQ*-L-9B>Xm-;O}5 z7wpI`6OG2E&qb=9-1o2l9Vv_#Rd8#RZAMR8|LQd(!4x{4bp5 zU@jKa5S6QsE)So8_QlJA+Q6Pe-QaPi?eZLXMQy16=3J+LlN=5iNmQkTOOjq)b_uzu z&XO?3^J+9@?lT|Z75wkWJo$#!px6bWT_yp%=tdm;8WelcW9DT)(Ir9aQ_J?z|Bmz* z62d7>ziTlST%u8DmF!aqqNlM$VT6Es?nr$2t-bf(k(SB2NvPUfRFHCu&n&1{usd-> zyi&N{TZns_LmN}ycQ8NzEHDfX7=#A}AOHi1pddg15)c622t@)t#yFMu;OLW~He=Mk zlo#NC`ltV&6w&`k^zV}STd@D1ESWLc5azU>7Tm>_Vi4O7r#DJJ|%ObLn=mK2sb0xOec$N7m;vdGpc zE9M{t0f0FGSs`1zC;$}u_sKF}+#fKUs^nMhT#6MD26~zcs7YcXA{OzQ`xTj5cS{FM zOUcJ!4om(zSbPFwAQTnVucVo-m@0!wnqwj|eM&C2@ST@{OZ21Pguk_?(s*&$C}5mP>!}B-Ff4x+!5KoBrfYWA{78=>HqOR z;Lpd$Sgm+*@d@5g>hx#uVSR1}j1VrNCai?H_P7#l(qP%JRxiU|KBD}V7%LHq-Vg8wl8(x6IH#7e#7rQ}Ce z@-s6lEaffZ0PaE7rhxk|svBXMkaCp;iwa5wUU|jDkv&SqA{1d6a@g=tAPS0@z_KMA zNYhvr)A?d>v3OV}M}b!iIi~70c2N_$F*?Sk(?y91H`eXi6>EkJ!q^l!OP8(xB25AQ~12CkiGAe^8*n0M8E~)N|Ae26R6I zgb@c65rYd6cv=4edrD;^#dJ1{K6|bdyNY8&ITp8@YC0w=m(H7Uuh<^G1gf0f6qowvvCN!n%G^}Fb&Fcgu1 z+xM}G1vtm?wK=kTEQR`Hd#rWXSvf&(r^Xj}4zHfK_Cjh#wC504(5J>4w{PIUz=Ybs zU@QLXIRy1^Ukeh0gSWOs+eQ!hNLYSj+ZBT^zh^F}eQm!mcRRP1)U^D$_itq@1d(@! zX^o;z4)_krc`#^jLRs-f^2BkB9*4qv8GZyyB7-KbFo_f96fb&SAm}Wrjs+|mo&tuT z`WpuVRvcT!9c=6Z|GY;};y_aBT_T>A3^q5mO@^W5fc`vVDm;+FZ4>h!W}V)A>SwuyuV6 z4vFp`QCSC8T`!2JzJZs_^7#pvCFF<-#?Y$ruVKIsWbA*w!XIDH4|4<10g8gi?X1gc zMIFp*nJZ#){UgeDgR3}`Oj*)laA!N1ih@pxU?KyaL~n6)e4$t^Am;o z@)x&bvIbP>gm(5)1UQ>ODW5WhMB=m{Xl!j^uZQ8?5&)d=XAi?oubH(W!}I4M{1zcN zW(6goUD2I=FNM`5mCIgq2J0L9vfYR@YMZu4-T`;CNb^3no&rdX} z-<~a(cdoX*Y+Rn2r)QTtoRr)xch4ROtw~cE#H;T^cpA}!!MrgK=JJ?)4Hp(MJ_%3> z5dmaYb*o)~ue;{AOTc8CL1A-(17@=N?YS2~#9jbsELqh_6d8`DMV;Nl*X{oFjHj2ud`3jFDn+i?75kHdIq|R=_XbP9Cfk{D@hr_;S7NX; z@+FVXkKj6DQM%3|D-HHy#cW$YSUU}XFynNE0lSnE$POvlQZ2(il4UxUL1YbvcHDXlq)w!dW z9wxGM(rY&M^}l4^oNt#YOC`Cd1s6SS>0))vThw(`ZsZ`QFeVPP2F?cu!m!A28xsEN zF_4pq`Jqq8r0j~uyzCD({7cPnsQ|SfbPox@LQcBD+c-x&osVTT^t!le=J^r-t?UQD zG}Q}G{iAvhE!J**=f0dG{ahTIXd-=SeOZ<&^0K(JFg|2zy~bXOuv0zQw&(cHvWc8I zRYMt9eFI=#-ZCgK2=gcts|O#pGxuWxN3;Gp8kcOSg%c~!NT~3f(wI)M-Zjq2PO`B^ zOCV7*__O}Azu`#>%;URhh^Ws+06Yw_cF`RK5}@WmAT$Js4(O;w?Y^bHuyC67<{}!n zeCOS0IO>3{=KnDGt}vzFZI`-}nT012g=<(ZWfr9A{)|@v4PYj$(hz;}Qh?#^YYRWOW9L7qyDuSD-#YDHgH9G4;x?GWN0}D5Hq|D>eV9-5EjITqX#WYB_&Gk;yOU6_drUpfWdy2D7-tjN_oncF&B%W=OikV)=ao z$_{}dBLD&UUli#-y9oc{`P=_z%lRMt-w2r$I90)`{EQh*MdG0NUZN>sj*V@*1P52D z;2tn%CmsuN2vKIm%r>4dXX=#&Fa?EIEQ$yfmIc@emBsSQ;ecX6;sHoXiD#C7Rg6{! z0#4eLN(#A9NZJK?j9m3wTeT#DkVf#OX{u%lw$syhrI1q804gvWQB)c-g|KPLs30p) zB;R^sb>4pHoSZr#L2^(^n{4njumpt4^UYFzHS`3Z-(c56`VO9m9q?TRB7neZcTm!i zMS4WWa1kVrTu4pr%4|4r!?cNyWw4l5fJGfh4G zS=0Mf${RMA@#rLx%ff!^|AUZh4(G#9SNp`8jW65enBoMs%$!0H#BtSBH?k=dhdrFs z3hL?~0<{xLk*mH^pmwfx5MYVAXA=Q@KU=625S)5N|drP7mRseMKotV zSGwj;1%Ide*6H9VDGLuD>IRSVqeP@1#{l=GBh&khq#jV~ve}x}JXENrB9}Y;)H}=1 zE0!>5vo(AEMCf*Q{E*KkG}lh@9dV;Lthp5M)qM(Qa0Y(*6ms4%y zfciz7n65qTVr|ak1|k-rgwIcr2wuLd&=B&wd#;m)u=n}9mU!GwWpqGp{F~w)yO*%@ z))&asls04Du0;pJ+O5QI(O+tU$U?VY2cz`%Y5w#Bh`x;^m;@=M$^;WZl<*Ia;0!aM zwR<(fnMLhigxjR2vVayFQw`b77YYrR6&Lh$+Ju{(f#6=c9zsE_Lv?deML+_u5zs5Y z#Ht}rwvb}LdT2Hw78OYAU5qZW@5pc14{#N7%j2+6TPrSczmxqb&?LP!_l1L^egwfj z%qoZ|8A+S?MCeiWOV@3Dwt~qrfo#JhAUOca58n{x23=Er^icFFd%O5}5D4@PD5R39=C0;J$S?v`t zdEhvxAruft9uD`iEVcEJd2n-+)5?coLwbE0@@Ah(nWfMS(Dt{2rSP46M{)VPh`6Or zrzD{hQUL1}7v(Fo*Yd7n?6%o`EmK$gu*Gvl;1Vm+H+K_luF*R!6L>y#E2|u~-byf; zept;%+is1ix`(VXUcF`t*`@1CVCHb{bBnFh5S8^qjO~>Z)DeXLELJaf_WL5=u3#ZK zPzE?;3IkKBj8KlqhKCAC*4$?F-ZN=z;qqa}E1+&4&)Rv)s`v1GsIVB?@D-c^n3CGuzAoF|w;J&5(cB^dHBJx|FbEPFTUy&imqsJZRws1W| zt3l?uDJVCvD7og=?;9NRb4YSs;~vzzBGiFUeu--rQ_vyRia8SM2a93X(q4ymwACw? z20;piGLb8TOox{(KX9Iu)idm>Vn-)w@>DvvS+#4o2NUcu25R8f)Is`H$mheT#wmx$ z7Q4s-NjpCj2S4^NCCgz^QQqx(0t!@nAEKSAd(lQq+GU`Dx&NX&36=Tj0CY3||514U z)w#>D#MXnrlk@id-F+ooT)f+hFTR@Q=#QWtPMRDrWp_$&27DIexH$!czGj z3+0(<@ikl7XiTsi+tQ7d!lKHA)gCzOul%CjWW^FJ#82c`mi(deBnXNH<&{_NXG@)N zo)xy(NmOJjMwSs}0WGsEt&+Tw7g4hpmnbXl5L6b}{zw#=&a>HOiBK3TP`51I^W%i& zC9{!=FR^iyk;-PVDxDG(qY-_oV8MY8TVg|!WHU7e#UijkDkz~)Wa7l2sVI54r-?QMDm&Ia9R3;P6m;IG| zMN3NrTVu<+S)r(^SHihFl=#WwLwo zFI8DOT9E-bf{|qGrIei;9h!)7+Av*&ts?1%IKFTTMwc1y?2oG;3(E>FLYR^zwTW{3G<@@YTHf)lX#bWO}bz5HDI`W*!8DHRV+Nzu5@AB z>oI|s&}SBR&`JD;v&)Bj6oF#0{1oZwXO+@{419}3r;t85e<&q!FYb@xlK6i<#v+zn ziN#4yLD+y140pvmg%LpQb~Af2&U3cxn>gL~g(O%R%d^CcZ)SjRyKQmCyI8tY=%aj4ykG4`dIhvC}+27mdAKGxfLZ_fG>1gED9l^ zyptD9!!{7Mf`i1gqekooE;UPE{4VWYBzpBCkhCqoLt>hn%m4=GEyE<)tgFr z@OZ$<{w}pq`x3c7m2Tk}v;fN(Fxd?>#1&-0mg+=RCml7u_GY%xF~+sM0FnAF1P zt0F3dSCKX%d(WreKC&X*TpSDUn)&S-G#zox6+KONACmlmSVu;3SvC+d9+5D5R8ycR z%hpdEVHH`Hkt|ghA;$y}&(R+Sy>$M@&xM(lsP!K@ zS~}gMUnm(^gsS%Mb;ZkBD<_Clv&xuOO*N!VIR+Zxab>a442A8ivHa+l%sGAD873T8 z_r&c=t>;)FgTfO+!oqd*x|GpXEv0K}Vd*C43S{S6p^sD$;$r>s#RwW!1R}@>gzQLJ zLguh7j=ossulWhsj9z|@w;9x|S-E6%O2$4PP>_g~56$`-iyh;kxqMPCozm5FDH_mz z?q*PkeL5euAQ?t!m0Us>T-VJ?=CSiEf$W1mcMwCx@`veq zWp&mK!V02r9qClsXkRNrAO+xg8Sbvyle13{gVTN>mz$TF07KHbGegz8$$9CP0_e3v8nVF5W}4AKifS>i8cT`@K?hhp zZnSKAV)uvNl+P)Kq8qvf2+UJ7^|ccEQE7!ue1TZOfF&A@&DRfH;t!D z&PgkU+m=?%&QTv7FqEftfkB6=o+ptL6^517T&k2TQ7?BY)AqB^d1{&9sk+apmsyf7 zmFh2-_DE6SOMuDnB`arfbmr#pwYz+EzU0j06YI*ogP#9&kNS55@NKk{PK{MBOaqFl6uH!Dy(_)nVp(534`0*$Ccf1X!(jC1lT?{p zh-ISj`C`e1A~GXH=Bkz2$yu);QMCP2h@3*V~!3F-Kob_Pw7%ZN!yTN?r1wrfoQR)Y2Lo z)sg)oT3e$EOB*WBB%f37yIJwZaO&5khbsMkVhZyqiREuP&vCS0g+gTANr(uP5(uQz z-ST{QV+gIdS(G!bysm%$c^98?@=_!sJ&z)r0gSNXBztm8X4#Ri z2vKT;RYW4TOzyl}cO!1WRZ>dfso8dd20vt@`~{9wwyZn5W}F@vb(gO&VhfUWj?=UH zWe+j5liLyqQVQUBeBf7_;<xEuqb6}Sj44W<=3$&+U{=+xf4pCn#_L*KJR%LDtSX%?Bfj*i>2A> z*sn3^X^r>zZkAPT)jht>v3S3*;mL3ILqMV}YI(*fp;RA=X)6DOH|tfarCtOVrZ2er z{(_Z#qbK>`q*CXL&KC;R?z{2$E~@3wNfiDSplwiJ^xez;F7zXD8ow z_x=9;j^SNwvE2)nu^ZjAJ(fIH5>t)lAUi#0szdjtu`{$izP){<@KT0@DdTee+PPdQsxPCov%&Upi$kmy)vgX72gH&_(&IkOQbc6z0( z1BYf8gLGD~5g)swi@KeW${AUi6!=P*KAzhkWw@5Dn9W94@n_R7XzHAE0ugl2wNt|% zc0IulIKL8qqNnZA5#zDpo=@SMn=+r4McJDheT2`QRkufx_R?Z2+?4fXm84rRQHZ+v zo*(V-Tiq~dlNQC4ajRx1jgX0K2}krWn0XFvdZaPcXfHO&NZ!i)MEqT3(fMn<$`Sqvjrhbqx- zAFNdevRXM8_s~q8MfF>bSkW z>(G>6Z8V>e$3XmKa`CL|Uv(v)*|A*ra)DJPXpqUX!j+8Vtv~qLUw&BycP^;Q5Gq%> zuS<9T{^ndj=VU%ZRlCtagpkF?&9W%!c9tttuaJYt7PKIxz)mDpEZuFYtMxTYH(&f+ z5;{haL&@56i(~A5$`c_67+^d%u>KJ*6AOKb5jHGL0)RV*|LN)MyHZM)f!~wUmR`^O~NQo*5+X)};L$17(OJuG8Pz456DqVg>~vTxBj{ zoP)uxN?hQnN2ePHno=T3>SYsZI(Y={SE1jPV8 z)!;cmXj0*oB1cT7m|K}lR6|@e~{b>zAT(1z_Ei z)o{SwrF+p*6+o#N61qeMEPmDPB>xpylM|z|m4u@rGh3P~xGJ9;Ldd(!?ecIlc#D^to_~2mwM48`AnN_YZO(_h3FBEKkwJC zFL@)iO|kV=@rH{|&CEH~;yW7`d6&vv?KwdfvXN}d;hs0`UOR=0^OP^0xoX6=C{gPp z*AQzNSg{#D>-Ii4{7ZLi{9k`&3wWPi9ap4af)_p~;4uec^@ke@!gcC?apvX~uMA(* z2h|iBd@ST9x*A-u%Nmme^5P8!2mbp!!>P1SQ8SEuQwu5*rPX`-uMJNO)t;AJEMne_sh<@SGv=Qh(Dv| zVDQ{s4v-AQ#!ou82y7%&s-_<1bLxvXJ^Pxavs{WlThuPw*wCm(9~H*;uD``F797hr z2j1e%NlV||bLP1-=U=?(q_nH0CvWr|-!A-keB%J|^ll1}pI z-dbm)p-Tr`Lhvqed$j7wT;%`3dQUl>^y{cuWfk5_dfBgPZ?Na#Qi>uaB5S3kS7ezM zG;lr-ZN3XLC(Nos(eK=XDlLP9A|7zWBF+Lq<@7B1bN$!e+#|_LJJ$TQBSSZV+>z4* z6#S~1e%zI-1&A+@M=L{ESP2$hrVgZVHjC(FdA%PmZwuyTw!ZRta#F3ypy2!S81K8c z zX)nLk6e~}`Y&}4eN{x*_D$M#`?Gct0$s0^U-ip`y%T=XEX#K&id7A-Z4|a^NJEj2e z1)^H!{$0DSPgX!l5DFRdUO-Zlx5vzg?k%dT8b^D%W}&0qoP?^#Z`Jj{DWJ9xQcgZr zqAyTLgmDA2GYC+M&1z<1hpD4Csx!2;ZTIary0vFb5Zh0?DdP?-0gHA00oYGi25pga z+v^X?@>^O7y2tK#>|h4cq^5nRlpP%{aSQNmvE#}HoEDS4&+(-garF-_jb%$uzGvlV z)8OXcsH$Lw^DCC(&^>2CY%SdY>)jaBTZn=0?G((L4mLbGhDNi8mL?aisQy1W8NdI? zs|q7E(aF?VBcL|WIdRR_V{>?3RQU0C6?pu!;pC(IWrbbwdz=I;$|FQ*wL}njHOT)f znwHYlL11NicaKU~d2gxy&Qi?m*2TL)-<(1ic$s|i7lZ2WI<-5s?n1s>urZe=hO^39 z`55cMlDk=G+u(_%d0{|qo-2zAc^=!=vVc93-L7uYbVgHA9);YL>aNN)%^NoJ!Ms$s zc)r4sfOWI+qk07^>!_&cB1+WMkJAbpZ1nk_D-sgzl@ER6yxbxPtO|0X;pup3P6zf_ zOKVQrI05gbGlSr5>;m^spB#%rn)b!)b!OHQX$Tx|8gX(j(?ZpAmC%GNc^?Fm;H=7G zF3Voa%47cg5Fp6@{>%?~zop>cb6~SxuXC;5hqFJgMei+^{)fc|GiHdrW>P5ACfk@= znB>*4mnhoYP(wl8ni+ub+68cldlj1T9`M2S>%%W!myQ;IhHB?`wPLxhvS+4C^b$LOj`!$2f3c)x_2GUH$|unQoeG zNJ-ub)|Jx?-=xfoBIHBRwbduBL|U=ic!m={oV9W1$BAc`!)o5sI%2fhCoo~$&iBsx zP4lB}SZiy$F_QZ(w|BYR2Z?rgd>&QtgkVh=(->iFQe-UfF^RF`Yj!niDasf6Kx3;a zHHgRrsc6v>q0^s#=(3`hoL3dJ3sHlpsHlTEPG5vR3L?lPl~YF)@vduwNC~ zIA2$e5YQt?c^e;ETUJ%I=$I4CXo+G=+$DMRI7i#158uXG*4#Lq)lHM;;E4obKo;-} z=_cc9_sqHIJpys0VxGquqZ=zJ9Sz+k+F3f# zXgxhW!pYDnS_0mDZ#i2h5aKJ(vpU-joN4LWpVXK`gzgf8yo&%vUl(Mb>9NG3kmzm| zotB8D^=;?wjd+9&*+fLygs6YuFaF>z3#d|-;q>J{G@A>*Ws0cnW&MQ$*tHl-@N;q7sqb3%qVhK&El}hR!y*skS{8 z+<8Ptr%+#J1POMpI>{L8dUEoYLpyfrXZV1?R)Z3*unu#qDMvZ?**Z zFQr4ey3mHS`Ir|?6)MSG8S%k&-ml>gmsk5^+}wQpa_-%jn8&r~Cq22WBgOpf12gGb zZ>yEE+o_ZM)oN_X=ELKQ!J>n5%JJ`fzxd4Ci@LVc^$A6QcnLA%d-{}l3!jYCH}$vn zm)?G9U91u_rEk(FrHrAW(4oFOovW4N<|Nz|1$I+*KB)r zk;4!gV}or?iW67fX~GOFa`yatzk1UfsvkbRCyl^d;}nb%?z{BJGR#9Ig|L+~Sz?y9 zxXQD{>GW=?ge&hfoZ&C$BCT6F_f^$}(iUfk^YMuie~mrIGN(Z^RQ`xD!7Io<<9x07 zbbod4sr9YvLfqBsPqFvKt6lrSQ$@%sKghr2_)?%{gz1$}|5c-eZ5`Q)$7~q28l&=qPaEJq=Gl5 z^>i~Z#zRSE#;%Tb)ptyw*Z6>?2IqgzJ#6i+JbTkMjMqA?dw&#En%&P%9@yB}KR0S5 zZ`X??M?VA?E~`4X8#n;*%x>U(WlZy8Jyel?G1LrC)@yRM1|3LuQe^~jCL)IWwZs2( zvUtV0XJ(^q)2=O!=MdW#PA?6wY3(o(gTD%K*tQ&Y$7o48)uB>M6Q9V5iw9mM(v#iGDSE&pHM%2N)eq`4)nxKVq5rYlTJEK!rT0lJufND;crQF0fyxwW=O3k z`;B6ywqF+^?#pfW%l+F9tO7}P35`**Picf`U@8}4c0tK9+BoRz@>|tcJ#)!$4eem3=QK# zmGpbsK41~Utm*5nT-n74x&}D_unK#2 z`?({x&sG|p3ILnPQbX5ZBaRWxBw>680Jt{)Fv$zEP~3I*4Lv0r*vz?g5v#+D(e&Jc z>%SyvNKI}+QQ2a0z}&PMrKN%%{an41EXwRm$rijy7Yc}o9R?f_nLsV-7sJSAR)A7< zULIegW9XvP{Gm3-8MV#{@AR^wN8n^9knjF+to}RLQ;r5u3we*GStMh2<#YvP4 zOhW47Q&F)~ zpHhF?39Jh@<^Vj43QSSOg#nsyIre5UQUOcmtf zVBbm-hAFl}j-(upEKqT~V)qr56>zSpCsfm!ju!6a+p=xVnfpI5Y z7O{J~lLFhUR}A^RgiE5pCNr~Tq8HexRNPSPzD1uT8`w3L9aQiZK}IaT9I=Q7I0itY zj<*XZAQHF0+eQEQ<5HUMKk)mGsO#BV-`5RH-v6Y91P6r|6GKRLFp1fn7XH+)Ga5Iu z7f;I$Go`Q&SMq>f83ja*2&I-3JG4F)d|66G>z_Sk`@^uaeqT0wvn&;dC z?&*Toc6i^E;Vxw1lCYR<^>O0Zfs&sIK3yKI4ZJYKu!vUC!GSi>x4C`Rhtov|erqYiv1U(n6|T;6m*^XBZk@7fBMK;+mMsmdjAJ-Ki=Fe$r;*4827zSv3z6Xf zq>pp&43xv}c5EA@-__yBNf+eJmD!=lRHs;w-CftM!0!T=@)>cG0M?a!;hzIoV&o{2 zaX@&|>tLirr{sdkD39}8o1ZNZts;<(I3l2~MEzO!aGTsk$8_|I`gPUQ4>DWJ{*u@c z2aycXQSlG4_G#k`bq~lyD2^W#%w^JG=FV!95{w$~&ttmeg?FxxMPB$7ZEZpyVPQV; zBxK3SaeOXH#3n`Ox#TVk(DPVTq?!$b-oKQcx4OH% zQ!r$+R)6Lv*-@BLu6I9u!$annyMP1SPz5$WuT!ipVINNgoWFyAic1v=v-O1l&+kt) zCL*?<){+K|l##fNZ|Chj^Jxoz`H4xjO){Klu>?WGSJXNh;h2H0uI8R8<#r`!z8LP7 z<$A(=H!p=J5!Qj#=iVq&POr1AVu!coTcIB^qwyYE{Fu-q1$?igosL%dlV{~Oq{oUU zk~yo`|CRhxh}R_K@D&r+BZny&YiI{&e-ebnDAa&?kNI9rdUE4iaXWY{_1&{%F5X$1D2RA3c_#p z2AJJ!hvJY#pM%lS(M40mQ{s>SLoJh%!8Ttp{B2&o(yqJbk1xYF40LYgpWmC{ny;Vj zmjCoZmPB>gU3K-$-L5;lHS&G;w|^hIHf(sR`t|kjk6TyD*NmEWO8ohAr;RtCs2A92 zGY$RC#@8WlUAwGn_`8U;Mr=HNM%UzNJ<6f)<4%7JUiUmF-m97Uc0NliP$bsvuo{s@ z9`PYLh?$!53xow{miob*CW+|!bNz{dX%K6ixx8m8%%dzd__BO+^5pr8qZ`-*NwHz# z(2x)1X)ykh*WAu}C?1W98^;MQ)3UJXh=dce*>X>HzTTYghqF&}AE>AszYR1HvpaMC zksEN<8K-&e`WowZtaEV1^NXY2p|YCoRu1FyK#^xzn&j?EYpsp;N^AY3p_F_DyPlm- z&bDm-N?5&HIwLiRiSyV!vJU;zIrW(o?Y_z1xWB>fvD(-u{|PLUF;A;N_!mH%x|}^= zC0yOn79tRZKmHRAHZlr|ab{+6%+y;TsPOL+J^%ngfX39^PP5Xi$w+TJ*Q{5pn2MUo zPLU!<-MzH5uOhYk$sPa4C;45U8HSccS)%~#7^}t@T)Q&n2-aG-?(!a)Nxs|kY%TX4 zV++oT2w+lBN-1pVnstiHJR6y%IeQY8=;e2i9C5w87erG}83Qk8@v;5Oy$`uD--(ip zJm*<_8i3U>e3N@XUt}PiT((sdRS2-QnS)Iq#zWyCkH5{jPUS4$w zo#K_j$=QeQ<|2K0yvKbY2Q^R5Q zTTbwq22iywjaH!zX(^PlZaK6xcqbI+1n||&p=FWsgI3XWP*6_CZMgRQ_UgV zj9tLgoJE7+Dj>%RumA9+(;YdN$7fhlSz(`QbG+)Vg?38pIKCz!Bnz5|U@1HF{p?(r z1*K?e2y&iP0ctvB+L!fJ3on6)_zQx8x=P2v%c@*KfTOyeo8Tb|xdbtkY#}Zh^!F2l zu_1!|cn~^}RU`Y=-}b7w6jZPIh&nd{+!ai?ZETb9ywk}}zDM``P=yhuVaBe6fMEad z&ACTU*_r&rT68!6^OqjG&usyOaiP+gr3+yiqP`P9v%?)_mqK?(NLzcZs^f@;y)FdZ zsv>m`L~Pke>Z~k3oKCVT|Fd(V6moK<+6TPX0GU;$jT>ZgdTBp?$9%+irT!Wb;ul=#3Z{c&r?0eoKCN7?$#Y=iCBp1=+3!+B`Q`b_oN0PEcIDr1)~qw_IV|S zLClSuY=_dvR7TT^lLez+8mf`dn0z0gSRe_5=bi4_@^pQp-)>PTSY=?xC8DANoKTrZOb@iL}b`sCsRjCHN zGF6+5)mh?)cC`msGIWF~PKNn&;xNcF^q?xIM2*z8x}KGt-XxJAWqZx}ke6SG8tMli zk+!ka8q)72P?a;7Y__@$Avm7 z0XyfY(Q$ufeTUuS%veKJ@j8+)=ppRA6Kp{8q(LP|+0BW@C_z~AB0vwWG2^a3Q!7Px z`7V7CvDiT4&M?AnPHxBEnF8Go2!MF{-4y*`u*kl0diJfEwD3YzBMp^uqU6NPoa`Wr zSbL0m=<}f%BZ@}_DlZkQk<=n(`$iOeP^%#tC7%P~%zr`A91t+8nr9PD#FGO(Z zs>y}7Vs+&Uo~}>p$v?KoE7DnOV}GtxHnW^l-?OV@dg+?AF@H!4o;~Poz`)*?Cc2%p zev2svkr)^lV=dHGl^A7HaD;amf6r>3#Kio&b*-89Q%f&eG17)?Xt{4Z&!W0vPQVy^ zwa)61_HAz~CeGsZPe`~L`pZ`SN)Z?S$I&grqH!LXmolmwGeRbo{`ROhzB9O9h%zR& zS_*uzWF6qN;;TLUP69-Uqpr!W1TA?OUH?66g)QJ2srS8@OuygGd$7{R+#~z_8`S)H z(O#e3Kaf`oJ)ETl9MrCxa;~}`3{-&4=avb~;U5uWSp8HM-H87?5KghT(-a16-H$$9 z3#H{(r`Y7W9VD)7HoILRZ%~=i6e(&|Xxe4b#6X+ksOCXI1uTYR1vOVF?q2zxTRZBB zu6##F(TBljr?@Ulk6gu+ETgw_8p-QE_giOkhAENU3^8czsp(dQRkO4E)+3-NuQFg0{em%{?Ih(6m zs-oy91={qqi=jG9MyVc^1G4YSog*vT{4KlL!Io51X;!+*jchrBZD;AxQ~o1mzx=jE zSC-Jh!wvI&9+{m2v!}H}U?ft=B=an}CdrMBWOOIexrp{SaV4^w8(+}k{jMuE=q8<0 zwY>fN(bKtZ?SnhUyEXw5tfYX7FilIy=-Oz&CH{nHnyd@O(O9m=#u(DUA?1jtb}hy2 zzD-@niUu{E_@^U9kzz0TIS2?OwG-t0k!u-KhV-^!A})AJkOq|k?0DXTx^v|-WyZxG zE6on&FU2X5Rm*ye!raXzmT~iCE-w;;j*Yu-=(-Nk1o=q0ht7|c+9;Of={vMU#oJA8 zthsp2zmoNkI4D%09D9ke+|sG?a2?yjC_M&5Vfh$6^$P01&Xk=mBu}?e1N~ z<)MlmrBLuXoDLQnLEqb@Rt`$3iHsSRg|t`8a-^fV#uYHW=w^MjW{B|x|DJ-Nf?#!j zI5WJ>BujI$Js`g}31F6mhnU2XC5#u*6(6eO=!iq|i^5cTda->tC(~Ds+;k^m{V8pQ zD>X>&>rRbE75R-?mL8A9%72svoO%{suH3v}%8EpS5$OdQXxmasoRV=iwv|ujMGdk) z5Ykr;q4+e~ba!DA{n2sLTU;jH4n|876`P6oo_f>QDA;dEjcJ1W6fnX-XjWM^U{#F; zil5Hsf+u`GS3LF3YZDX9#(;;jI{gD0QhC3iL#s$WKbqRevO>863O(1R03mR7NMeb( zS6UB9ND|^x5-M(eKpc1!b5A#p{T8QU?(JVql{U#gZ^7n&uvZZZ7Q!<4yM9U#CCJfW_l3o>j4`rk$L{Q9b8Kbb^&Ebo z9Bh^r)hr`(Umw$dp0d{-L`facPu8FaISqyZ93sY{8qm(B*&P9I2H5HeqhIWrG2h)~ z;(gnEXR7i{^>rk^&}o6my2{1v4;dszA2G2$&@yj(E)@*Sf18u($snV|4Evvy&+IzTOc#ri}2&X8IX>*(Qz@zig8^?{hC z0a$tUVB4m(aRfp83?TjyBN_h-xE<%AkCGQpNM#*=V99r zzQ51`DFZ&nEZ-v-ul%`jqqJBXnAB6v!>ZgwbZ6QUFgRt0>_sJ`l2IUyR-PRIGI?2r zR(>i&4$5o!tlmSDy`aAu{F^l6bYMQkPX_Vf*&VMVZkV%lm9|p_$b) zPZSO>c7VUDT72%MdFBmC3C@cskp4O^&;QAwz*FOiJ1`J2 zP^w^jhG|m-x<08qBrRJ9^chR|$WCsH<}oP@(K9SF7*823ClM1+tT!FId}uL`x~Ukm z8DVRK1U2Ht52g@7#SXc%SoA5WUTqh>Za>5=osa)?s}`-zuxR! z`NStDno@pSmvwJ`RlU!DR>~fVH>O46&m#Y-2CEPE4vdhT?n@CPgSx+d^@$>5$74Iz z+bs6L(%9m@saZ2+;QOMDzdYD|;;UucHav#n(0B7-THtytG`C>YuvD%I4+24XQ-(M+ zmrT9!8IFYLfW1eBp2x>dOK_axwX{P56;TZ}SXX-rA^`g)uvrUciW5a!S9a9OaCCW6 zWuY_-(;rFI)1hHhP`hs08mCn4i>XWQPB_WJsv5T{|C28} z#${GE6U)~!ZxPa&P8{ZT%kvUcISe$9m}tZ930=|ek*>)67jF`e8!8ml%DR}OHRQ7o zL;H@Oc|r+tmg;V6VJE{>Far=}O8?y2x0}!gF4}W~HO<_6tv{9fywb=FMoy?8;Y|%XuD7jM$Ekn9G(!zi&3txPW^s5S9f=tfMJtfr&p!Gv?>p#2Dn$ zp-bnB#bYk=Gw$-FzQ*zxNrKc^6Ongsbx$;5N9zX8HK<7Wfx!y zB=vHg`yN9bD{~-iJjEevOrma=&x)~w(yD&xY3p%vO4x|zUz;i_U-)!aTxNHFbS>UC zD1@l-5SqTuqdKW&v^@9W4*82z)caIe5{VYXu=^zJ$)PAsu$rour8Q0I< zn=S*~@G~B*EmW^eQy&wH&gH&fa%v+CV?=k@ZK?Zes>l{>0s$`d@9&cUa6$|L09`x0 zv5IfLb)|-Cl=2H+_~=V)gunE*1R8VgcbH5&{Vc z?-9jm)U!4buY}9|rM$w1Xqu__|0PS7a)#|LuGR-bavd8b5F-t)j4kcMXc8ebwSp0C zBumK%pmFEXQ`hcYd%o8%=)V(0nayQpy}(lB(OjVfFGR5KUHZo|6Jk%@mVlF#8Hgg# zEtOUG8cEzj)vO6WFuF9RL`=W}L$j{T!^OVT2!Xh-5%;me)}`jSjrsv_yZlb)Q>3`% zyILlvnKlx52~2Oz2c1qLwGux#J87@`iEWo^VR|793HP3?uNH_N-(9VV5^rM+y%`B> z`Aq0(v55&t`@P=JHfu0eB0swZUWMa{Y;?vx!7-4iE zUDdPz6>%(mrileZIhC&f051v%32)V~X)_r2{@AYZkzuZ%PM)aHgm=SsLMR9j-M;_< z9zrj&gw8yY1OS3l?>!C8DR?zJ3hV^f$&Hb(yBQErvX0?Cd!7%)%RGzQ+*G-V%sk%I zOGY5h8T7bxv(umi#2cK-HWcPYAHwld0}tBujPrihd6gq~_oP5kfr29W0me{AZ1Q2D z!&qPiu;!W6&`0QCO-_|+Q4^W_se}||&mAg(GG$6>d6OgKg_c|x0RhPfM0DgK>7xg| z>m6H+57!0;SlVlujL-Lt=^ApW%eMPKb|ZCpksS$vjfLJcuz>^Gh^eqbSkE8ZK#y;p zDlQQ4J*kiGHDO3ph)8jAu^cs*A9ksBgKyV`KEafQKzzM9Q=<`?3&2v|;bdTNssIu+ zI+<_d&q{dFq$h8MAOEtn+wO2x!4DpDf@Txp`>caf%VKRI}LqbLg9ExTAYzc8ea}Xs-XnuxwKN9R;74}iYPE500NMR zXF+d`+$$+K2h210$cKyo;R;zUuWrYlHH$NGiQggKL)4L-mPt9*_(dhvPp3o#MM=+c zLSko++T-x-ewP|ck`k|{>~hum9{pH!Q$lnw9PZxj=^{L4BY9Sa)pf`5_tzn&M@jlP zN^cO+MVd!dk~uBU(yna*^Xkg*<01SmsVh02j(j8RwJp_d2Ns>>L6_*0Y26BkyVWqd zQRWVxy)Dd+v+j?#m5L5OdSW0SNTDv9k|<_7bd#7n&VQ}!Djma~boOTfDTAa}|hLBVw#wK90|h`>BCrrkkrXj*RF z7eCkRN6WI7fh@jdD?oN^)ONKgfjK~GG$~asuIYRl^wOxvC%cIkIwPv|GP0BHYaC$U zL#v<;j^(~OZ1-@@TG45Ks%+G+B%#FKkZ}abd@5?QJD#m9u9yqzoP>#2) z)^OU%vpI5itbvltX*Rgo?dzHy!nd^AYrn)_uU~hyoA0F7sApKQ@a15H8z&k@s2}3Y zgrFKVsI?d{IV_kJB9b$p`8^e5WQ!=$KaflRu8R8z+x*vwHO$ETBS$woVDl3IOFv6h zJFM|z?)*I7=hJlDyHAq!9OmY10a3Em57tX=JavF$uPSF$r$cOJ}kWlDL}sm>&l#$le)AiNZ71b-ZXIXO_7KrP1GF z`W%lPFIJyp&mPBH&HJ0%l##$JM!SEqs;UW8xoL|eI zmfb7>3{E9I^|b;+{C1c~=wzSjoD~8f{s`W;o47+z$jDNQST4VM&GKhY_%S+RZRI~; z>)cVXk)-r9yD+P{u|dQ*pl5|n%k8Qwahl5XzT8*+JImfjnV*uSr$LOwT{MHhFXyC& zlU<7;4K~4p8UlQ_#$3LO?NB0QCLyH5)N2ul!DsF3s6l0eN8yB%g9qSyz9(_A{Iqb- z;$KxI#KunB$*s2WJ4@_axOJyR78@^tTG36b{5YP(c@G}B81GnCHed4Tj6?t;1~BI( z>hn4i0kM5#$O|9Yj69L?5FU1KQ4P{^M;xU0X-d;thetsha3C0!@Lil?sfbW8Lb&%UBx zJ1Mc1YL+VCS*+eYiIsFVi>K3KL~llDhMXZLIQwnXP18| zc;w~dP?jyHTl4H8v}?!fcq=b%sWL!{seEU)O_+?OY9KHAomxERxsR6Rhw7yvB%J7> zPGH?p|GfH6<*Z-ixL+2%G47heBDFIa9`H!nkc+-GI;E*R6{J6nHBpgNK|L%u&2jw3 zoIWLt<(N}4J*Wt*UUTW(EaLw)(M$*-^Wg{0FJmbO_D=SMy1{j~+MU~LZSn?g9ofW* zM7fL#P#h#K_S}Wuyf}1H7%GY>3IYytKAm4Gt6^gK{U#XJ9ud|5)=9VC26sX7e&=(g zmOrXj+-IW}Jm0#~l>E-T;(=Y4duvfWeIEqB>WJVZ{e@XGyT5_zUT)sMJ#^R8nwNmV z57)Z4bL5haB-(9*Vs!$p9baYcl0}s!B-ywx9PcHA98`+-Hy+S_$P`P-aZN9m&87A*FUK*>_? z(1an4xLW!8tB--*umnLNpOqx{XO)NPrP~x)zP=sh^^$s!8eEx;uEIo#eryg~Q}lcc zPDh94Zck*yG7>ZaD{r**?pCc^!StS(iy6(HPgjd@__-t6un@}LV2(X z_C9o17~CHa`>(L_jBJk2)b_FN?>xF5UhiwlK&od+dg;PoZ2r7&nFOX3wVHzgXjNde z^!=K*nXg59cYPGI9-&KUW6F6HBcPtfM-Pwe_ew%jv$p>pDBha~_l3bX_JKUYAd?HW z6&9X+64fjgdQpgNK69MsInTn@@Ot5@

88CaG?cxjY$Kd;WT({p4p3vo4VHesDD! zA`szmfy_4CrGhVhvA2xzkg(z9GA&K1>Xe(ekI}?bc3iYjZTIv3#`fvi10XkXf$JCA zyYhXPl-aA=r@qtLP-M+vLiyj>c<8mzXrt+QCE2lA0xa$`icN{w7k}+|NzeLZmW$NzYiFx#72g{eeCJc?HU;ic z-QV>TbkDKN$|542!{Wb_G3`9h5eci(iw;eqI*845A2$bO2mem&Dsmy){m-pj-rIg} zKm6UC(YOu>ijb}*1xQc&zt)s6>y0tTn>rcUA1|rYpY%~@_(%DiQIL}}@16*Do~I#b z4e$%fSVOqWxpIdmIm+m;e$8Olui5>(4yNmU5$Jp0iJZCXXx)t5FZ@)|%lvdh1U%^R zn2?Z;oH=BNAVVO@IWdHxK}E%msIXMnF+Rz8GkOgkWt+T$W=PB6iG~V9bFOoq zM5K{y#=!=*IET!~*!q&}h}(~UY4c|l<bs@FY8F?rw{ZW=wF-)_j=5Ou@nRK*^idrceUql zc-skIKc5CHdQ);JY6Axeg7hi>#H6J!LHNn)((9DsnbD*o@eLaXsmu7Fd)y? zJT%RgLF1$#*i$}VLo(wRA2C!p@p3mBKL4HX&h$3(@b+73oWKMpU!Ou3^KSeQ_vsuj zB4;<7Y(4UNllFE4`)32d!^#^H+|WY8(50jO7z1 zcJ=MUHm}!!KC_xRm-TxlrJj<8am~+PdCt0)dn`m_;M>yaJilA}s3YbZ_HC(dsN!O< zO+4}wow=Ce!BQ%cd;HsP_W8&$ePeMhnae{xk?h*LN@WKbU!B_j)KN&zw<`JD-fgeE zA@WI6AciVa5fHu5#>61srA&4Hj!!*t)@np-hmUso;Wi2Ms_G?IkXeLz9PD_H;b^~i zv!vstfPSeI(8fc}xtP7Zo}XVu@po=EuxZ%!epY%eMq*kYMXA$oF@5N#PF3SRc5h?6 z??Qdd`JE7)Xrv{)v9yaSaGw1Oz1ZNJeBpk9*u^jE=Ua5q?nrit)L<1aqUAN)liklb z8X5@Cd*#$SkDaxH+VEj0jqc0x;qLNpdp-5D%Rt&yi>x_PQes?#*F(L+mm<44^bLJ> z+AS&=T%2MB7b$l2T)gJtpaBN{K)U?G|2((x`1UKd9A^WURq#%MPd457?NSQ3 z-C7kVjD2X4<#TNkr2s>}H^pj5PAp6C0!Q%dvwHNOkM&dO0k9AqRzwb)e%^!TMxsXX zNWSJIT={3m8k0#YLAnoc+2$9Wx#~X?U?umj3pP>x$nDbyQ>&o-;r5$(3!2=sz#~$t zvhTH~8q05nCPL-nS_6wuR6sdhWNC<~gmP9j@x3oC8!{11qa2zHxoXEakAb>3zqk6qJ5{4;lUkko+*p|(jN!wl}h%TJ`0O6 zHAP?7hX|H<8Dsts?j&`yoPT4@3N&}J5P+A=VKopQDappN_Pi}^eL5t3zpD`dd7y0G zgOhJGHa!)X^RLkM{XPu4F_Tx0i8)-7d_QmZ{?LJY?@DL$lN*@!_O{DHlhmIG0YWIGlYhDc38@ z`nkW~@2{e%jE-Orbbhhh?%r)kN2g@7?tB`a^xhsJdymUCb%pFaBH?_t8yj@HtQh`c zLhc)W<>5bv3L-K7BMP0ARO|$X=P|ZxARz^>ZKzmD*XnyyF!Ni^Jk}Pc6vjYEpKt-l z0jDAU2I}0$7k(t}JQz#_Oe%)rmd1$rq&rU9T~Z!x9$N(F%J03ahOoTM3F_@Wem?30 zqtdnnuW{_Q#Co|fHkWujEdk&|s-%2c)QqW*}MI@mL z2p-=IbNZ(-%nDFunS)@*P5$nfXW7xybDR4tSCkM-7xx-zi%u#`7TK^KZ>LeU;IoB} z4ENxR_Qif_J=!7hXS3UWJOxap8nf42dWhl?@`Zud6z0FJ8UX>qvF*APNo1eX);OB?iaWUY9e|9{pTEx46uuZX8RP15>B)MC9lNg(LRx4! zF+o`-Q&~j$IH>>;&wu~_|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsBsMIUhu z*&*}Z@cKJj6DJRbA{b%8$iAAD~o!axeXTj*#24GIS2wd?>s^@q;N zs$F0L+4pAd+yFy$!Emu}uXxUvyN&VmSD*w+NmT#^CV)NXZ+3N5X`@Xe>#B6NJ^%yg zJU;e8KG@D!=l}pd;{t#VEd%G3dw}-UDl%T*4G{tWhJeHx005d~U?veffu@=Pr1Sx) zfYTw68WT)R353&3m{VkFqb7|oMw$#JhL}c7LroHRGBnXM35k^kh(G`W08A!@JPD>0 z#*-6GOwgX1p41qWY}Gw8L8gsi&#nr>W$g znKX~oo~E8jH&}d7=UPLkN{`^0B8e101{~=L`?~mJq=INVJDQvN$Pqv z22BAyO^qqFF{s*^=@_TzQ)M&JF*G$WO`)mi5$Z9inrO(6Q`)DdjRB)XX@RNfq-c7K z(-DvXHiCMZVqq9EN~fo(q|^05>JLny#9{z6&}r%bY3dp>02wqrL8eAPXaE2-00000 z02%-Q&;S_*fuWJ=00TyVNRbc;kuqtal*y(E>OBN$iKRbDm`zQIPt!?*B|lTuJv}Mu ziL|G*r;}--U{l%(euX?!(lS3(+C3@hsp6ielL|dg&=8-gh{YaLz*9}8)ix>WZ8bce zq{B@{WA^R&+VC^$cXD5m?ifwWZ{C;%vWrL-y_~WWPGM zFZzmuDiJ?HNrUko{H*-Y!raW@G2eN$M0u|M*wE7cLmyA|9G_4QU6+9D<`-AGXrEP9 zf71Z}a?TNtR~d7T-5=x84+);`dtWK1>CXsz7-XI2{hb4De}$4AFO+l=`6Tx9mfEC9 z_d4(9?K_{pXVk>4ORzLvZY4Xkn` zH@oW&MvlC+M59|`!kVu}lt~q+NnD4q*yw%zMK_g2fb8~Nk=d8L)!$Y=$(C65en-1* z&}+b?{B>cQ&uUk@)yhWK^1;;kC>`}+4^7cSBPEQ0F`$-F^#=LQh9lPrjujh%%DWeE zFU~g%x$gRac-{9o-cHU=NEcIgapwy}k_uJQQpQ~IkBuq_DA;n|`qvAeUxf74f5vKA)rk^mxX*Vg@Sq4lxUkuF)QfjWwMeJgzQ+D|Xi@)|wIzzgUjYKZ*^lgMOw z*Z-+}V(|H|`nhH_)p&Nth(lq#h359b%>Ce+UT}J$!iQoVh-L$w4v;_OJ+Suz@c0No z*ZM}t6xtH-84<)m#pQDOkyJ&x7*#hwddNl}$6k5W>|B8AL1@v!UBqhPOBM)8qsKnJ z#jOzPN`eqTia-G!#0CQf00eiZ8|i_z0)Jftbk&D3mF-N znI7u9fNZyz#pyRFWXYK!mic@*h}sI2r-$d}VyGS6n5qE#mEzT33ibl<yv&(wE=YN!^Ln8p6MO1*hedn0J)YpG9Ja==$_IbAT)y=(*DY$&R^vetP z29k}4SZNAgKKLR)w2}!VdQrc9u&EM>l#rBYB{Hr)o4Ja=wRctW5=udu`-lUE;J&>a zDg+{cVk0u`?hFF>x6orMM@L-%k>vJvX_;0~0Df}+l6=KQr^msAveQ`Iyi%p~o9e8x z4~RDIpkiQ#FWZJRkWtTnEqD>h8VuL!Q`bwyOmpUv%nuyX`O;3!0R z6A0lM9ttXyX<4D(gNEij6N?c(_rmyp3HCiN*AC0Lb6m z+)Gn~M%sD1d@;*^fHlR@&hck1x5a_w5(yXC*L8Rb#{kA=m>_EaZ7bRUI!J*gMO~TX zh=e4=t-Qk=ZZqCwfH31y({?97UX9w)tY(|RfceE57iW!l(30V&hvQY1a#9RPZps?c z@!F84WML_aN-DPctH9$VHl!>NrD>Zx4k6g;Gem1^S6Jm-MS#H*e$dcKJZ(8?)i|GPbvWwT>AD_HA0091_1*j zObAbcgjdJptpcu7R5#+K&a%1|Sg~5v$tq%uv_>T0Qb;lwI+szT)jNxX zHJm}lkjNn!1MCyI=@4WO zV}2EV>V0$8@ZNJfjpJ-%wY>*pcOdYtyJkmH+9a7+T*;D168a#yT&z)9 zkOthk%{wqQ8Q3t;ki?opv2rgzZTcbAcX|YjZ1~WwYf~~`xKm!G`HOPCp}K57 z;{7JEj)7d{CgTirEy^XT!%{cPRePOgNY*qlGzx-#Ei~YobwtgovLWe_B*@)Px*0~; z(SU%|>yWLyD9HGs?2CX1QH0$76}oOOc|6F zq;+IP1(c?|G?i-AdFnYk3TAXd?Q}y7Rd$waJLu7YO1zEIiHVMDZ+gx#Ioo1orn6UK z%59<4-J(sMSs{UG6?tka?b)i(Mgu9STKZRE<;7iG?^TU>nZY4BfbR&=twK2bKbq9H zbcJ@>$FN)L)uEwy4JD{(S#~4{;gD8#^l#>&H4Y(`>y*lQjMBXS25m84Y6X0pRA zMU&;M;fEMrL{5zPB9WPN=$Sc^oS%Jf$T3^S7zo|3+ z8;rrIJu#6M5rQnU0AVJfX96kA4Gh-Wq-fI?gE?&>3e+iNG`^jKJq95&06Js{7OAuV zLAB5e_#w!%e}SZ}LtdjmQ}cA0Im$*pRka`S_HMO&q{%}$tFCZGho@s5Wtzmmp=n<5 z{RJ>&^KRxv;L_?f63GL)A4TQLzccZ4JhfHBdKD%>y}w2o;41A}+G!u2)+O4lLsxY+ zt*r|X>#50dw=HQ<9d2nKo-84 zo4ABMy=NF{|Hykdeq382OK;28$lbR-r*^)Nzpwgcs35~h2k{5OtU|PudMo7jTQ=Im zhdagMzM1OgXZD;b4Ar|A3Lk(F;Sb`l%v#DM%}x#Sxu@8y1Y{rOec5EId%h2E&b`p} zQn?vZia*F#QF5dh%QNhrYp~ zaWQ*j&pYz_ZJV{wHm&pBFzWi!2g47EMC`AE{j>g6f z+l|}%epK=v-g@1qZH#Pb#kD3*i#1zpX=z5%wCq&1n+lfD*;i>ak|~O%N}$xJmdYYR zHid|&z$sRRZA4vCq97<&9HbUwnPS91Scs^`GT5{jqADPl0_QbmG*3M?ZSn*`XKK+b#Ftyeh* z%ZXAdjnwJ03+U`313p?M(@owy` zcPGYVxE#J>?U(8x$8dt2$RzVx^F3Uv%YjsZ5NN;@QmLcTzC(_{Z_43AGDtdNNME3T19)^Iyesa+sYeYs26^f_|DxxZ)zfs)Wh#-QZEEOMl z|B7NNiuX6(;8g`d1}dVf7=L}DiipSKn-LU5RRmMCvanTBBC5p%OpXK?qsN1XzlN9m zQz<8j41_5T)NLHuIe`ZT}_i$IxFktzN2Oq>SBj!GVEpr3I>ou zbSI!ZgAa_5*GtGU(L+L3+RA7bS0AFmRHsD|EY=TDJk>Ep(+Vg_9OQB9Z*PJvQ(&dh zUyY2>^5l85N;7bf%*Q0nKRauvzyb1a+XRMaAjhz5V?m*4s%n16)R-1s5+XY%+NnmmjwF?Fmt{&R=sE9$Yjy&!D~SL$if z@t!^CR)T}aRWn*voo*Nd5Hy0}s2Rt#e%#RI;`pi+6F!QRPQ?%7R<*A*KDw)Ql&K5RXXY6c{* zfk_1Iv*DG^K)O&7Vi%G`v02iChf=Oj8(3LQ z0758ceT_~bji|sP6HA~+c=tVLi~AI^0E^5hOCUVIx8iAUKyGLQjoly7Zjf3QN@gY6 zg4N5~Hm*iWE|ptuP^?N+WdmN=^H-OnjYBmKto%l39p=u!>tl#aOP9Ux?CF z`$+|mew%Hv6jA`7StiqWgy_adiRO1V@bhLvc{meL-Q*KN%e9U}lr7w5a#P!<6!GC1 zQ>1bo6%{WourTKjI5K!%l4~*(I+UCl2uvBN5)y40C6WRVNXQH%6T<}w`zT(F5+;G9 z_`t6uQWcPkw;;3-FdDluMonwZ6D)+kyKc+C^91!2?T^rt=eIvM;Q~#FqD!b7$`9mUisrNh9b$cC|Fvg5kyfyRTV-n zie_P1ATSYO5s4LLl$IkN3=Fi$NOcg%A;Jg-kU=nykYVBzt$jjI>F#eCBxGca6hRQ3 zjga%H%FQtPf4ufN1I!_?O=K)Kf8gpKv`iyI74Yutc96k5tYnsb=u6OQ0}{9TH*Ph8&vDD2w-4`sDfoL z^slvGrmmZYL7|tlV}_I@r3e!a!Pc(okq4f8mApYQ*AlJImHIL~G> zBgcFLV*;4NxAt8Mc6-Mx0oZ#)k_9JgsowOI1*c!y-RkC%>R61^D*sjNnAPLXAI8no z6KD@o7L|qzB9arvGD^Zlg2^igBM}B6IY}k|ZM2m(<+hSYNJdggkjyEDTXQY8+oVfw zsZ6&m)?(!;OKRq3E@ooqHvB)b8yrpAuL>%nV^C36MS`)4s*0+LqS{muix%2~F(Rrg zMMObOc)mGf-!x)o=)VA}2s*KYVinMl2tH~hB!$fKz(oW^QDF*64yp{0Ad09+3J_T$ zkQNmkXv|TGQmO+Ug{mrosB~?Js=_DlkzLK@@GP1zA$6 zX)an}urP{9uv~aJ10+U7i2)e0Ph5ehM`)ZJ76eiY7J4KgRzRKN5*2`;1QtolL^pym z3m_>_>X}VO(N+oqhN)sQv9%G-1m`Bq+hmKgvlN>lq!U&gu&}x0u!jU)6HyAn`g;nC z0~ko8A*^!XWh%l7qRBW2r33|lLJuiYE*NA*O$e9)dM}1zZh($ZJ`$%fwoXfRl+pzC zh#1NBtf+Du7Nm+17^JE-GkB%Iv<~;{{EuVpH|B>dc$3>@4>I#S+%`*!MF2Q5h~<#h zX~MddrC=_*=S#i+Hs_c5RwAk@sIn|ryJsK67C{gcQZc!%6rqct(U^vYre0&Q(X$oRmvOTL1m)I)3(J`> z_4GQ=L%#X}P9fHZK9QZh$Yd?^pwQo&g=PRJGYvP<(5WYXVL2GG0;~m5R3r{Y0H7!k zSfmAliv<<}#StY!8+XMt*uDlJtk8`Wf&n%SHOjl^eokCJDXcaDH_yN01NyQ=uIsRs zjZOyNQm1b|jD?J|kN4e@Oe@G5>>Z^S&$n1^&R^%y-0PjxeO7YbW5~lZFn8$AY)m%? zH6P`lU6_<>L5opk5ItG931oG_eL~7yZUIjnL|QYJaIY7qp` zBao6L1BVndkcz4_=)I&Ma;b!gHWD4IHpq9HE>NA8b=oVbV4vjdf6!ncp#uXg1$`XO zZrL0KVPM{B%Bl~whTG~mSc%DZEfx;Gq&ka1Goi&!6iiT2pcF>_I7rvo!DD@7cEBXm ziz9Li7vvxo4?qxzMN$_as=-c*C8)~njjEevTv49=a|uc#D3z#^%TyGtYE&qMs4B!o zDAv}t*pyUMK|n-6VyGgFMIwYzP*q~8qM(Y3EQ&!%1qBE!fU;Dq2%tep77{55Q9-4W zHo_>dDhmN&SQP?Qp+fn;L&Isa4UNXHs!AGUv+Wrw1C7{Dd=mzG$3_%3i6RP&6$M2Y zs-lR*wop|RR8BmAvTs!2pxBL#}0D5|?OcTCCFWj#}@B{oqfh`{#! z9d5c729RME&=5euvYh zyYq9tkJFFu>$iVCbVKWX-aCElSMSz$4}{_Ul_zse3^m3bSroUz5h< z@6^^0a_^&y+4Fedy_|Ql!onULC$-CpF!Jf%`Oh`Ep3yIm|!;ZH(hQ+EBXZ1=)(!6f`tkfSpJpk@vq1)5`r*-};Vd zhyW`L8X8DBW5$D_t?Xp%)beXTN1oQ84dJjnWWwtFP>2rL^)U2$e{*1 zX9B2|N7Q&d5^ftyv;z*b6IlTb3_`_<1bLAD+DstNG>3t4j2ZiHlzTUAry^W1#Rvw0 zM*}OCsGw|f5)r=SiCX7*Kk?cfckRMSBc{9tVS_wyBS1>_-q(8mcPlG>%T0d_iIJ~c zkCK~9Qq13=zR((sQoDkS%NY<#sS6r7QfD(OZ{+$>#MBJF9QWo|8%gz11uiV4ZB?*X zCyJ$9t*D5xK&|>jsER1KEuhGq28u2<7DKQ?u|)xK0*J9dVk}rA4%s0pNjnxwk_te9 zrb48j{IpPrkQWe(W8%`07B3bQ)R7}2DHzfv5JfEFg)xs`OY}_*AW;NGimHraL}L*c ziU_JAii}keR?>?bYO7i(s3^rxcEW?RVx(0OG?i5qRtp%2ilCsyVcatCp{$34N*xV- zE`ZcXi3L6JYhhPbkFDkMdwZWxzeVphJO`rxKWW|f^oJ(R&Ylea-_`o_#oUC$j|KrD z8rY26A%V5F_@p_?g{#?ili3?JP3FvZrD4*Q1RzNe6E^PT_=o?kVmY zFnk_3LkIY)6r>>piUJ8)I(BGC$9I;0lGLGT->I_d{6A*%RazA>jCWX`n-E_#u|}bJ zql6W%ut8Xhh;^KweSBky+!UZ7L*id+g$5(%)0QMzi91HHFr|ti5JJMA#paK_W$;tDJf7 zFGVl%v$&^MM2&=KJwwK>(Oy1*mfv87mH~nDp=A)^rM*8xBp;M|M51~cDcO`Uy&xW7 zJ}b63!2N{SJ0Am`&zIW=s!9r-0E#HFWqWq}WTI-(fnpVvFZP-raLo!Nn97y&-lmf^ zMk+0~PnK$;_e`l4Mbiq5MGn=Ftca0R6qv{rJN8l-fl!JS1L>0!89&=-umvIPSy(AF z$Q6RZr9u%vMpTsWpP~BtnnX#mS?sK-79J%gkOjsS=kse1roB(U*Sgh==u)Dda(+roHN_c+ERH~XaxlEp??O}Gn z#AmU7F^D%D%kOoYXIPlq6{)@SV~jR6%&d>9nwew==t2;+NQj4F zD7BvHsQ)aD%KKQ=2!c!yFjdoFBslaCjRHN$THc1ERHun5{+}g^aa$Oo|*Aukl|>YIzF^6&X^BL$L0Jo=zHj* zxy#lk_2L56Ac6;zbp((=8PM}8Q5lfmU8IVkn_Ir`KFA&JYkt;#KU3`^<^9Z6wj(TM z!^F{5(Go`;yCzXR;)nDK)d@#YW3J)hv=v*5Os5zMs=VQam?NTR^3C1xdiZo1>O3Lecnhm&o)$NgJKT~ewn7EdW@ zJcYe$&&n}($}D{zv*7i&(CEjdcMn6WAS{al9*@{~?Pxp3dM@hfApDiABEytJXv9Wz z_WQZryzfa`eiVNXr_pqCtlJyBYZ%XY>G-%Zm3h2;!4(AH{}%80kG?zb*?a4eKm5Zg z6W7aeN8#XI6>KKctno`lS6F%M)tPP}ukf!eE>)VX<^#)Mh>542JB`8U$bn9*xd{uK zE|YWVpCS7go;KB_^-v@?A;gSGB89BXX?%VqJ#2vv7}@i3jCbuVZnAiq&y6$`*9wWM_H`P6D|gebd-I?SjKy35V8& zIp+>+~NSk%8T$gW~Q{W44Ei_t7Uz4>ag?pQQ0aB|D4P|;ro~V zjM6VN52H*zz2(VR0>$|c*v_+5@wWJ?Uy*M_qjrApRSw+mw*)|g=Krhwxv!2&s`(%A z^I)r{K|pzaEbk_;DDIinHKb?GXMpnim^%lH@Z!t41?DbuewQy-!ZzNlVMJL*>mTJO zCbI|N4Kr!_j%3(#_o~aS0XTMR;2`ZIO5;a1m*Nfc^8Gi-y$^OZwl$l(Y4gw)!bwze zVp+}a6gf*vNPf78sJ)UjI|xzH7K+Y__l8x2HVZW_TtR3d~bMUZyt!g@~QU#;43!_YK6T33|{W`h#x4orw8a;KO@g&NBb zr0ymfsDS_IW2<}^5!K`~)+jI0+@#ft^q^JY@tJ9b7@=X0IS6wcu|8AL>97BsJ4(yY zie{QVHr6OdW!mKA$gx#!cRQ(6p^@R&U$%c&_hw$+eBJ}EFzWyqyvwnVBnP5|l86aJ zBxVSKm;eG-ePqYMksM3jy3v$v$VVP&7yAwl<`GTQO?|YWtC?x&2@f`He=1kS2%y!% zf*>%F;7?#bj(UM<8Q?c?d#qBLe;7%5@x5LqsoO8!epCbz8B`a~Og`7`mi6Fmv4L_O z%ZL45Lt(kwTsy86BD)Oy;eEdfxk3kGUSbP+Jk36KoYfx7hf%{-Ty*XcHwrqQ26JO` zaPw@r^Lg@)fngZIVk8zQd{5^2OqzQ-an9@Bplg*@9ydWay07R#lJEL^?e^F zUq0$B9%g-Zi=mJp2x?3aQRcD#nGbV$2p5S%bIEwS-Q;d2Fc?JsPS;WZ+^uHGmO}RH z`rlbO#r1lLc=T7urWW-R4Y0?Pz$pCek(7o#1%}8YrP9{Is9xZUw|4Z338k|J(A(XS z+3rQF;~j&e*?j=VWD*fl^wJQBNM1V8vrq1SUc4=Yv7Co#hmTPQI)| zBb)e$pI(sQmf7iAIQ`B^QfDVim!EmH!$=dKYtpT$zOLy+nx;#d<27UwE@)E-7{w@+ zZvd7IT+E79Nm6GW2JVIo21KJW*}7OVXQHItG;xWeET=C;&fy|DRE|iDS|e7@#aMQRE8`A{g3erX~Rt(w- z$hVRMz#xKe65>-RG;ISiW^R!q2}$ea3nFO=Ig`79EboLb2qvV)#>uJ;5Kc@Ij03=` zG)aIrm1>@sE~O5k2+WK*EW#j(2$n$D%sOI@Oe0i_9 z6^c5mEwb&H3o2_>(=&yf+Z0{zBMrB*ryZ{plt+VhXwCM+6;@QN*#s07c5XDB5!Fqt z(P}qy2IiWRV)w;{q)~xp0X$G)!UP=Q8AZr)oXHrPPNZOq(I6>Z;hCZcsR)N8x{#*R zMzd8ej!Vg_I*$RyP__#i)u@aSXcRK@B3hD(i9%XwmO!nP1_-HzL=@bS1i+b6=FuV5 zP%>nMLT$((COKA9Sk7u!9c68V5zP2-U=bM3h%$Xfc8fXmq(rUDkN*ndIS83C`n{h6;mdwByZ_Owfl4RLcqp z7$K}`LrGdQEjG$1%%Me7O-vOPV5VHQfa={E z!mcfCWwnY`VWEwbIHaqq!3-J3@X93Gw4*0n$#qFa92)GBDaGizNT#<-GSd*M)>Uh3 ziH25{1~TDuYGN4HrL?VD%S~H_R;{LGgB4VAs#I)J+QEwvHgSS07aGc|6+?@d+iHp^ zRBg6WqqQ>GR@Z_T3iVmCCbbMqSb&^bs)B+uDN?#ij$ubDQC*sX8iH1?;^4|oi98KG zTP$HAX$b@)OT#h5D-^9|Vp(s4xFfDn-!wbvqNY?Faf&8b+NQ29Y0PD6*J8*GBvJ&y z1d|0BD3I@#xer{0oTplM9Wk&zbqI|uS;smQb(C*{s>aeKrYs?kA?_f0KwVJ2Cjf7Y zWO{zRp?WM@R%}NR%61b%P$-=%nVKmZ%1oVea3#V1_D_70jqRLZqmAv2ZQHiFv28oq z*v=*!+qP|6n>Y7&tKPcZHS?|Mp82yi-OuOYSD*y{1!jFS-qxf2-DT|j@qrz5E^L66 zt(`y?zEe$OV33Lr!~rpZGbTmLMkZFt)a6Z*N84v+VhYU8{k<~{a{M7wu`4)yxM0J= z#wJaxb*{ zAqLh=djub}h&|uK%=&k}(w>5o$;mN5N;ssEfJD9?jeD)Yc0ZIYQA9sqJg-EFUAcLO zxfpWNO^e?OELt4C+XQ=lk-4c7CCsHdU{8Pm95St{`tV0efJgi2UZ6JSpFFNEyvrB! zVAsY}%CV}POyxW%r>RYn*Z9qxR%!_~!nmIc+~t(bjL?RP!GC~#a0rm!(xt~woxve+ zoJ>;xGU_}?W8$XD_?E@BF?V)OmF)X<(>>`yEvjIdhjqsovD?6s`M@*FNt3;|k;rcv z0$Kki6;%nI2*gJ_e(7NXF$g%LXg-m)7jz4m`G6Mfh?X3kh*xntb!|0zo=c2)ADu-E zpU}2|bpB876f~RN?wWk%us~9f1n=)R%E&D}37v!41BMHKaJL=#9N5Z9AFw!{Q^~Lz zk(kY^uGqHpxd-+Y`y&OWf1fYkmsuGnK}H@!%*0{IlH(tq)#Yk@iEYm(ja|K{i6#RS?Fd@mfO6v0Ovsj>dL^pJ%g zl6+Cvs9GOR8vqGwL^4R?nwzuDzs^Qj|1?~Du^Nqrbz$102>I=TSE`Hd6WsNjPHON$ zZ_l~~udZqnP7MIUA*HB5I56&=vRv4Z1n6I;mHL@^WI6pYz!+5U8`UACze~+_ehHcS zfDnbv1GZxCjEz3%b5E3q*-|3^GgRz=FiI2nl}PhLpR*Z9IbQfVi(E`%RF+L_gsADh z3-iwNAL0%Yyonv#$DocJ>Mv`?fAvAJ0l%NTgbbn3uMnUcvQlK zI=vrwyN^{rie(&@U>u9TGT?tAcBRws(-~v*yT(+Ujs{79*(LJ}qyfW$uq;wsGjKXU zonf+Y4vO4wk5C_aIdDGYs*h6=qcNV9QFC(_rTLNT#bqF~tE@Bl9Q^C*P8kxM77njb zNV!i1WH}tHKuEN})(yqsy~4ye8-)G|yF-$hNA{YqUHk+=kfYB?w zXO2amJGB_QSVwCkRAdH46pC4ZT^J7R>kqunBJGtBdqRQVT2HN6zk;O>MqbgSFYrjc z`wx^$Yx)jb{T65?62rt|vsbEog5H~a4|eg+cE9W!^aik;f}HHrI~9j-Dro7lIhL{P zpKCfZuP(&<8~psSg9_k#L&)p4%$|1Mf9X}z_Zdxn+TfMA5GWXPi% z+W+u^=PkSUYwySSgoY)yHfalVD53^j%oZt!ieg$Svnb4f=j)YHHkj18BKfC3H3zDt zz7P%+39%Ih+#}8|({ulvw*4oH;9xqB$E`Hw$K%ny-5)J&=%2e@#z&8jcPPpc-5EeR zx_jk6jfq>&pK?203pfV3B|Sdy(;#A^;h&4-!8UI)as_eGd`q+oX+~JDz}w=$l@Gjs z#~ssMqCRZo$<`6%D7KnXBgEef!O#;=3@<1X)8tia3(y>%)GKRNT)~B z$KA^fZh$aMOp@=?C@`(1X`}>L&KcGwn7H8-$UlR2Vadeu0GxjDBnm7{mFa%(m74}H zGZp*nKeehJMZa~E^uuX4hBR~=B}iDd3eYw-wo%Zx>o|x;o4n0g?K0iK^AmZ0@*w?v z!&s33_%@|aoOtu(vPNtcSKO6|HTEx+E{JfEpIzND+ixD$F}XM(Gti&cA_+1!Sbz|4 z+yu;hOvHlKLv61=Q#|U9-yBrQ8J;OD|5=)< zHB9k6JtSRhDSc6m?tH~t^QCrI%f-@bqNAt1{JD8XKM3rn`x1WYYZG@ti>C-HJLJY0 z2EU{e;>z%Pu)fVh?a%XHk_Sh4zB-ep@&rP1&4Ik1`BBo;Y@lzl@C5(5(?}W4(qei1 z-MDzb^v*5%axf4pn5n*~%dV#6g~)iO^+35`y>y9tT|6Y5L_Q+*3yRNKYUuyt=yJlJ z@<%i^1}Qk>eXlCaQZy)f0Y?=hxhHVrlzhNVc0N;9j^)N9?K4v!b2mNZAds2psY1;9 ztQKPnQb=cj=*P){+dm}9BVzynIdrgZd`GuS{*V93WH8l-E_+iFpKk>&oTC-@d8-JD z2as~^H;iKOcNVb3;P`qYEX7{&@^q-x=qjjU1}SWa>ugVw=xrufP9IDpmRdZE-#xK& z%M__^$LRHZ-|Wx_$#x^dtd={-YnEXAmoR}+EbZxqWleagMIPDS#Tl{U{KQ2`UBVKgA91Yezs~; z#}3qd(JG7LK;0>GifhhSn2Kw?$dTRl=9@*{mYT$#Ls+b8<#bX@$KN3=$!rVAib|KT z$ls;N^3{!;n2_CULsT~N+yk48@sH6c=yk~G6*v;A^#7RBQZb<@T0yCW5u%OTEXN*Q zy2C%M`VU33A^%3=GK*>uK{X)}KTl(SKsp1mWsBblcXr@6jzE&_K`QCS z{2obt1?y33Mwt=FVX|OI^ePG5MTAM(VP>v$0~MS$MFl}gQP!y6DDLo3?fS;Q)TAKVMWmWaU|ta?A6J7(xtVxQON^g1sWroDXuqA zH53KRM4O6x0+8j+gP9H$<+lqmcGHsrQsGI$g{!co&t%EOX>5(H1=>~ z1`N`_nQp!|?nxbQA~IEMQpo}cq$bE!tO*37sIF5R#l>}mVp_V6p+q*BRGG>{B!1s_ zTuhkmIN{-73pL!`zI6Qr`EqynOh&S+;fwZUb)Mv;@`%45M|&5IjQqV7Q8&roJ)VOC zkdLeOZ1p*{BS+XC=-Y}FnWXHW@Gz;VjyLgUOL@`I65@JFY%rrmuJBe{ME_EM#j3pe zbWz-GuMD8~eb`jS?iQEWAu^bQKvIj3`$y9LXA)`7>v&bekhqAYZAlO=eClpGK$GAj z%ZzVIqNF~#=2o|-EA0EcKeFD}G@il^j&oiE@&=puj*6d{lKh^Ng@%hq%bK9B_C1Bb zf2vBM9xU468pr$!!45)8ZY)2*?eevSlOki&xvf*Ggk9r|PAb)%P-bd{F>mUeFFcN* zuV+@*vdHo3rft~c?7jWh4@f)=Sw9ry3Wg6qCsF+3*oU`_2kvSQ+jSPShsWtDqD?x$ zROQWnbD#bnJxDuS2j%j)Q)O7q6 zKN!eigz#4WfxYDtC~~JOGPwkOpFWZpyfvR80^^+r-VEz3auUX0`4EgPxuc6UwscZ7 zzi=G8FDr_ZRL^nQ-L@>z8p*mJNYKiuw$Q`(srT>N=|ioo)% zS*2p(Tfw}@!F$V6uUAY7y${7r5Ek=`ySZ?(-K0A98vehay;29dL zdJv{Wm~tsX{ zmz*%(-T(7>`ifbVa&jDuXH`*jm1LJLsS9a%jpF1c0W|c{zOJ`tPJgTRO=Hc)x-c9E zTgh7q)R>@Ry?8|<7#22edzL;rpacr@v$lG0*N|{f<)T^1AC8PfQi{jSby9pj5wa$F z>CnAOO@aa`4GX}-CftHz&=lqr%LikVr^|cw2LWpjyV%eIS?d|{=m0unqj#KkU5Klf zwLP5iYB8w4Qh&7yw*de@+5BYL{U619v;A=~5@?Lq0oci5*%J~(X=&|W`w~oj3)d1= zIxXd2v)VGY1O(YH`)?K+l3NEs=P3Bmv9Q@uU zbeLxw@Myhov8fOMn(xT8T3-ABK5Tf_w7KtQx$F{o3JXIkKQ5Ihi3@2taDq-`WN^`j zW_#50Uyzg;%OFY>N6R&`RgWgLw}U`#lwncRm0EglsYcXCR);jNABEeNoj^s^{p)8q~oL_mUzCf0agKJrfCiF_PY%{pXqS8ka?4MG^{-xkVg;#<`ry1eDy z5NJAk~r+r9Euf+$j49dqo)FBeYtt#n)!kTQM6@3hg$kYoJSr7#cP3Dep~?tVOZUe9}2#R<&aHW39ap0E9Dy8G?4k zO-+&OpyV0PL;_fC;e)4xp2xjA+DE4rXy!Wj$Q{4&o=7neh>+i?JlZTh+tMu=_orFd zH4hi%fo)f8>ac?!OubdpJHA+-H&ot7DOa>V+=))h9J9O}q{Uk}>mYd06)B$oGSWAq&$+D z3~M!X&Xbt)OMAsYjup{y9Zl&_ZE944Oi|;W4;D=AF=&b4>J;H}I7IStZ;Dl>rc<*M zje+?Y!B2t!=x;D}f=1_~Sp^vK!{QIAuC0XXyg4CXo9F7hq247(*9{M8R9J5d8OemQ z+My2Z97)8JgV7TDM@Kk5O+B{K@?f1{r>q}`Ob1{2>cQ^(12!aRV_h2sbRn4MRn0<~ zFrcn}sfV8D`n9ts_ID=Fdd*r6I?IQgo!F-4Ru1==3;Fl^{o9G^(QRBVsN7Tdzj;yk z^Sm2T5b5zUFDfBlt&cG2&| zL>@(pkrNo;rWZPS0J&9tMBp?$Eq{8QbW1w(x(qD!eP&s>IKH?DoFt$>?*jkg@nK$7 ze8;~}#X+_PJUxqPX@|RRDFO6Zcqn-oL)lx-5q+o1dM;eBtFdf;73X4DFz#Qai^v#K zsA+DL3f&4FOW&)Jut1~iyD{OiVP@-xnUlpg-Ox`ydYcdq^{Y4U^hn6omHgfK*L1_3 z`!cz=`8jaE3p1d_o7*+8_lz9W^_8+I7Qd%Xa`i(S~CAIwnQ+wCVJ~NBnu5p+D^|F>N?_WBh^W=!6g0RP*Dchx<*~x|`^3x+G3R+&< zq-Ha4Ay@+3?B*PLZ^N8<`9#STPKwG*IXLC7;Y)9At9rTeN?d>67nyK6)16xYXM! zOq$)ZZs%qd`xkq@-!|%d{?72;8%EkioQ@26{C?@28M`Xg{;9~Owr@NY{l4HsM^vd6 zD8<}t6k&J`sg5=s?f!gq7Z8jtHfupdKWADZ{DClPliuna1EV|8x>?Vy1Lqa>4vSaa z4kGY#abKkcJE|!qq$S7@`9oOm6LU&E{;Qk=f%#yCAviE4&ei4g>X|xjOJBZijvBBY z7Kv#%yk+zeb&Uf05z`tlSx8&H#F0PFGk;;pWz5}n&C;!Q@F9&3JbRf6sg~&VO97zO z!du)Zl%X!o&z?e~nRH-4O^ zMoYks@&l2{r`+?Z*WD%_F@WFG#Sm&EG{G=$}RrAQY8xuW&r>R@N zR9}P;Dnq{cG`DLiB@x#7xR1&On^(#fAMU|;=T?66v^%{U=C)@D%gSpOF(TdYn(|!% zy7GDF%MD)liyfnj-#1byE~4o#eG~*MAIKZ&dGDr;@LPw>&uo&cxKArh-Zo)m8;S$7 z6&Fof9=G7~n>PMf(@Nzc&lJRYQZ2y<60$I3QWT&+{v@Mh<gfn0YbpYL{eagXcd~b1-wF9g6LS1#JSMkFc-^kb^N|;CiIE23& zPPjM+x<9qCer_F2LbWZlrbaV*z5Kc2&8dz(Zi8{Te4sJ%{5mW@b)9xAbg}k1>gTwK zF<<&+eokj*Rhav|>S;$5A3a{2^>_U+7LcKP;FcAuUPIH2V0VwHWmY_#60tWMJSGuR zO`kD{Nu6u0kS9Ravs%^<6?pg-IYI_#|E*PQ1DWe1#gwD$HcNMC}7%_GTW>)OqdlXOl^}RULy8B;79N z7O(Bo-*cPI%>EcP2>#t6dw&*44rs8B+>FvCG5zN8J|&vEq@f{uh>(L;6bh-xVq#UG zv4cLkjVM2Q@b^~$?6JqmVmrQ>Xs-Kkun_@bR-~ipLq|{~6_>X2CT^%9gUztG*r3F~ zKbu_d)_j&}Qs3UXw6(>ulAg-)jV0{mRhzonA9vY4^~JRQd-J>5HV0X{ZC3ajM|MwT z$?M%r{{DUO@!4S4RkHT<;6n?KSV3M_oW9@G3ZvQ`65Zmy6nKr>%uMWG=kyvgHiQJ} zYj{HZFdUhh!}2-K+F+kb_S=Z_MCgd&b3&EU@96aTgrXRHp6eD{| zROmm5QLB#C*Z+%z`quyKuv2iP77xMhL)I6DdR$l z6WC@#9A*RG*A9`JtJjw&yWN>hyJ=a}GWl2XigAZ!g*Ek92H2T%E2&#=R^>uhYZ>{N z)N0Yjlv(Qb;b0uC`1|^~$6e9L_tt{w=Z?bVzvVqG^^No{VQ{EM2^b3@nrj!5U@GBxv#rRKg&#|+iEN5m;( z=4Jh_s(v&XeoR$*6{;?yqIUeEt?EJ>W9Fr_44K~_Cm)Bb__wVggFW0ou134-x6pUO zSlLHW`IWQw%tI4!5iA_)lSF9-L$5cDz`~SVuRvp2Ft+d?@l}gCLj;4n4v&B}rZSb{ z=}VR>NqiK9_Me9Q;^K9nI!H|16ioGDr9~FVejX~@Uj3EM}SytAU zvm4iaTnw-)L2Mn|14CgQm81RqNt*{haDq>3A7Gn5|IzJ7*yn@7ZyglniFajdHJRq- z#Ts?B;hlfs4g;B7<7M;43M(BZpH+|mAU^;A73}{42H^j~7b@gGh4}w1B>L|Y$$tYQ zSjo=c$F$-n4&8`Tq%v`9i~qsQAY9Kg0{{SV0RLA80f+$sfmn_r9P)Ahso?k{S9xL@ z_!ORdSGz#T82UfoVImj;0RZ>U&#RyRDq=oAyDnd2KTo^(+W%diUVi?2dF#9?eYI+N zyXpp4p~H8EmH{C^fQF$(GmIhljg6tBaUnoB5Hb)#{GNX1!?=KHMhN~n;zDEqSRO%= z@k|p~-t;uU+jO9KeK&038UL}18FRB1zB5twM z1Z3Ui5ytK5QcD zA>XUJBwC}4cM4PmCBuCcC04;IQ&G9~77ff*Rg&DUgg6a5*taJF%3@T`7{-N(6U%%? zHeq34RLH4CvQ1PcLSEuXUKbC)wp19h8dZ&FnVN=zw~wrms?2&`tTt-gy>#R#3_=(X zz6Vu(SFxW**blE28CwVO+q?)iso_%NJ2(_@Xb-I0jMHC%nI(|H=;S?6wCkcAwV_#- z9u|daGCv6djC4vVL=CaseGj~}-@074F(7Rq(b44xIK)xwn<(RQshujlY$jX~%{XbP zh`Bz;Cl%MB&NfN1o2qrWt0NLFC$3s1RekI?}tp}AQmjx9S6*U!?ulv`f&(A{yx&{Ey z{C5P-@uQ3`pNWiEVEtW*h#*d3rq%rQydV8`o`w|oUZ3sMqg1gm4i5*9YFiv62)ocqG%F9-J+s?(qZ$%#t8Yp zua#EQzYs;liO9yY?n&=5=+`51=JPov(MotSB=7>@kWefv=`6FkWf>M_8PTM3B%V3x z{L>Kg0QguXQ9rOket4NLRMJ<1n1_%fOCXz{C5}UY4iP96;=j)Tm_vVcjbBy&dEvh) z=yyUi`rMqvDX$#W7b(j80oQmMfPf?qnB#{Ql9T6^;pP8&2JrHK^+*5dH~`@iENGHG z;f*0B5uUi{9tGsRISY6!Lh_!O67|@L<`#))vpF(yqB4+kGi*5p7AL$EWqG(byfQ3v zmeA<{0Eu`2fFCyLo}z#vQM%k`PBMq`Hn*&-I4As-D!>Ni6iME+5M)-)^1w?jrzA8# z4O0p+uMdWR3jjNHi-V~xeLyEM7htIsUKGM^X01SBV`F1ZnoS{zASo@BHB+#XrNGUu zHD6whR$pFZPzVbsn5zp!pFt7EY>Kk@AyFi69tSS0bm%yWA?*i-@UcBeI;!3((aY^Eu+gr~G$&gPQiLlHmPtOQM<4MQ>8u6szfyfLD9JPru2hIG$ zWEYUwZ5r|^zuN!|g#=)uaR`p`lu+?wa174%jn46;z}9R|egL9?VMtX3n2yGzeRKc$ z9XthTr7k?|@0fwQ*-S__&ZYuU$djEsczI@na#@KH_W{E+g@m4>(F9x6-a6+N_37`u z7UIwYhKa6$sc81j!p=!~0O)uCLJa7vO#pzH1W%pO48;Cw2`MZ9@VzkgVg+?r062`W zkl{5yU@r`rdOMR^-};a#i!&G;-<^EIkO$3(Zb+08Oe&#B$zjA&eVq!-CK3%H7zG3s zP)kD<91AOHk%{PNU4y^FIWoq97RyGQX#9815MaT!&`O$+XuxkTWh4p7pQmVH+Eice z2S(m!Wxvyovg>HW+H6h9$e*w+WGzUWjL7a5mWj)OiGc0=*R(fbEoFxj&JwIX$fCXw zz3?|=d>>}B5-oJ1fiwC9P-lXvSf;L0m8!hKq`#t8hOtiK8%{Ad0eEJ;4g9QfG+FK7 z0IQHwCBLknAQ-r^Dx`*j?#F0YG<8^i0o*j8LL3e(4k!#D%-jF)=Ib)5x^VLRBwD(4 zZ}awTC|h{(*?f9@@j2P>g|T{m;@e6*dHbtNRB`?0^^d;qs3s!NhoV-Z}8;(5*;k7qIZzR^uS~@3wc%d#~ zXB3Dgu-H3AsstTVt%R`O4zE6QL$BfCAM$?SCoDKOTDmcuDWehDZYF4);la+bUPtMV z4DmJF7$gBvq%%qcDsIY~hXs%3#ff9`!*z=&^|jZy!7)~ifV55T1SG*ZUE5M|Ns|FL zS>4SVFfQ=_Qf8C9b6hzc-lqLji@yI*qh8-3h&b?^m zZ6*#FZdW^YL=K8$p@f$Z%T#lg+@$N%q{o3XWq1MlT41dsy3+K3{=);=bh?wydFT*| zp#UEE#ewiYQ?gYaFsa=g>2~`o%e>7s@#{mT?oC;WE%osZ#m*fVJiPA(5jnvc88b=j zxJP_&H)@ejO|wZewA^-put&_?srJw1(8X~^Gw0g6tu$zMO6@ZJF9hd11$H<#tr{% z0S&tUdQihL2vUJpTi4-HvJw3Lh%(n2bY}O@0_}>TA*+vKlk`UDmoijwRR2-qN}=-x zOGNm=tirH95cz`{3p4t}GsA_3J67?$?V*-l!wend8w?+`nu#eTqf0vboDg#4rECdrez@4Va0NQL(&ucp`%b2L}f+ z#dwo-IRKH-C$Yh*VKS7ZN$z{E$C~3OjkwHs+zW6)M1)`|oxXhP9tB=b+K3nT$#BU> z6_?drwpnI8(oP4>DDuKDgtFQ`GXGd^uDjIiO6&?{yP+UD-HCzXN+QbRGi1Vj!t)|1 ztTHHM{W8KTBIpVt@N&|d_HWSPKwyykj5&+qf{^~14a?iM3^fz^-VJ8V z-zBnenPb2Zk3&y4UQ3Qj8o4&51O##iJpF#m{LKL?ft&{m=F?Qy!f_CfYG$fP&I@); z2{|>uv!IC)gx12*7eC~mLP@ceH65WuCGSlmuOMK9o|tnyW-y=r9@uQ&W-db$C722U z>8I=@DhNqNzD5IqKq>@l+SM$l<2s-#pQ^W=8CxEc<&+Y2y>GoQ9r4YVM{v6Y8P1<=7Y&IeHCd)tiWLL+_R`Ru2cM#Q_`hP=Hxx}R zF8t%;9mWSAk#wK;qKx2>57tV2TV0#i_gpy=Cnd$#w?bo48_B4CT5!hT2vs8oBqoFm z8u&Y?IK9GG%Ori!tjH;6D}sA4t{R-i{zqaf^_VJ5yt9*6;LjGERn4 zSU9^N8UGOc#@mO#3Wuzz#NWnDvs*X8Z|R0~8m(bt?CXa#8#38YZA-;~uI&h!>wn5K zdTXr|!6z%}uDseOMUgAr{$x!YH0!z>C)kF7RXZvZiven5S%aPR1x+*CO@i~52+UF@ zIL-t{FBr6iyJF=u=1#-o^j4=}|AwJH(DOCNON(s@o zeMu=;VaT>!4aRI+D+C_rDjs4uSdH*|u>anKz|#CJvAIi2M+9RU{7}iYD0L;%Oqsrf z4e%Ga>WV<5PFq8I+NlU{GVH^OixaWrDsScTov9>q(7=%5ybI-^Ot@)(P4KA@IZHXS zULoZ3(v5aVXIGDEPGT)5c%gt3RVGpHoyU5YUhLF;oP%=zHoqSPJ~&7yL*&(i07)$N z@ZP;M^jfVtv_k~Kk&xj?Cc6(ECwAZtAKAty8xbB8c*4+hb%K zYS^3BXyR}laI`DzAGT9ZEos@nGqX^GqD*MX+`moshNc# z+Yiz5v;`GgEC~qRPzR6@{6#&;GBU`LV4FK{3J$4AzP1RIbB{G&4rUr8OD-MqoCm0; zK-mr=-spp!tt{`&Cy^B7z(&mHf`}1D6q9yvAE_gN=#~xAZIftC$cBjL7{O<-&nq6v zqRy6#26@yb1+#qVLCmpU%o4uh4F8Oz_d6G*IVB1525-h#lTIoPyhdUo_Z#-SryYlL2g*>t6(=c^fl~}*+ z{L9+hu3yN24Gb*k7Il{6ZbG&PwKmH`eIhBfW0Gm5XO9N{_L&PKJN#ZuS!pR;5Se)0 zsEMYz_aMrg$F+ZD@0e#IU3wcW%ATayq5sw?wfW5XNQR4`J7w1V{w||$lhu?UkhwkY zJ7@x)IN@V7;y zaP>C(ynYf=pTQ;T(0hpMJ^qB^$M>`Ly(QK@P4kmw^j@?TC|XL4SJdq8ncARo&{gn~ z|0w0%)#bUF)IPQlICN+1@WkA()Z@R9Qap1acKJ1fhUsoM*15`XtuOfJr0tvUmEFc- zVDRGB=Go=-b%WbGt<4sNnVMF3?~eQ0Kg=@^Ju|QF4Lc4jcYMU9=)D_`oF}`X(K;gv z>V@%&bPbudrm9qYhasn{DDYypIJ3}()tOr_O|GwOFD5=sso8`+l4vGh^flgCHvO_L z$6=>5T8qf8NU7Ey869o1+-PU3_PUWD^pp{;T&OYZsNTqQ)p9uUFOyqKHJyLC8nmeXI1?CXOx?W3DAUfsSHowrc}dR;_u^qv z&0IkU`o8Jt0iqot%>mz$KdhI>7!K!i71f_CPCYhy*!Zm*<8B`#&A-@KY(5MILl~kP z3=yuN)3TshUYYxh&40GkSe{D-Fd6~@j*}pXxc7%7L6jsuyg(AXNYxY=03<2RpoWVe zF%*Z+vq(-0p@Jq+!~m5`Bm_XihLr*#GwyhNOXZ2YuOv2UIkKZz6w!|vxlii4BP7Gh zDd`M*(#s^x{d%w&O!>!Wz*W-w7yo!>z0EoESgpD;J+iUhK69(Tc(FIL>+*$|Tp|+C zE}?n#Eba`@so*%5Ocx18QzrFIa-G@n-PLq8buVt6X*DIeF)@h}sA;>L{b6qbXFa=B zMewrr{}oG)y>$=~Jd@4soWyMAmgyrS%*59c1*6ptsHpqz~e zMtB^+HIP&+Qw(?68;T{DW;z)2AE3iYh*)+lpZ~20DG=i39I95*zP^xJ47eXE?GQfj zELUXE`6HbV>6Z>f?s32!k7rVm_6sL56)s2b7mrg574?!^Hah@~1N-geaCua%zjWDCq207HeUjljRF z;AKVugj3l{RI3+xvTFuR(O6VMz+rYCqB;vR>}l(|0@CVt&*MAMF^H z$tAkbpXmcAd5lOeuZqH5B0i1ydiqj6Rt4snnJfA0d%3mix>|g{j&Z1TOD4`|ju*oP zY9Zb)eFYi(OL0BzQ9ZSN!%OdTnBy%6{^-8Z3c)4AZGcNK)tN5+Sa%60Ezo6T9KbO$U8oNLNy)y-vGratM~J{cqJ;g9B9PVKDrmfG9rXO8t4wW}`Ai*s!IoeI@zHdf6hYt*nS-&})Z%*&W=`$D5{V^php-JLWjOxDnX$xi!^k~!=T#jhhgU#< z6r>vxLWMNwVN|jNMnCc2pajT}n2Qb9xgR>KhSx!|lwnzYKD(>o#AH$7AaU!)xXHD{ z+0;s#G8K>6g^bFJ<~Q%EjiwE%Vwoj6GJmoJWIqW|9TWnr@@&5f6~8zVXxh5)CH!<2Dfc(#61D^5wtRPwF zL^w@#$rBOTuYa-_2x(2E>Jw`dLm~SdY%grg&J8TIW5r{Wo#$qIOpThWCZ)|UZZ5Vb ziz~~M3teqvBOCe)?d>gQP|@C-0~eFQYfIPGSJx*S?a8i}Dr*h)2C0FFIQNu0>7we6 zYz2qnPD);cO5g~GZys!_yRMJgujnPG%jKR2~;k;--?{rt?hArPG9zqsa!sfZMc&s$!HG+{VwRe^MTU+(l7MJ$Sy z1BXBBIsH4+ae@*7iF$BhG(8;FI7;Fl|6czLarEzI;T}z~xFhdVVU-T|BBMe#ZwLcX!V*3k#8<&_bFclR3*j zB8W{XeQU5JR@BMR(OsX9%vUNKzvorxdDqTStLWQz=Fzb8=i*DccmFj-I(&^plqrj! zRP>9}c*o({KinyNU~1}?;g2q}83gN34T|3+ATLM&z{!KT*dxiCk9wJTcd2G9S~n=; z!LVjz|KC58RTPI(g@GzAZ=ikv@LDV$oXr#NrH_`Xcq?s8+`P=b z<(+64Ve!;u>l%h`Dmu7}4{7bF)ml(IYnf57`CwpwTiU0`(xQSo2jeVAosBkF@l%I4 zyMu7Q7S>Kr0EHX%u{;?GUZ@O!oJU-P0th@y28-YJM46#MS!>a88KoDpB}5rdAucF@ ztF&Bh7Z@g?&M23R&D;2_Ij(n#XV&?gdD6eU>^{a>l{@kceDrvfTl08N&HeM*c=v{b zDl9z^BQ1)4v0b1HM&W(H;8s??qbyqo!bI_aUM!*H8On$i@*<*f zMe8hFS!?H-!ovbZGzYjC)tkQ=aW&fDmVZZ<7p|qZ2IKm}gGtNlbI%)fd4KEm_y@S$ zqv{2q%cLtaJ{eFa7PKE$ijnNR%>>we{-{cxN^teO{V+R`LRV*CL5F93o+S3 zPl4*`C0(yiJ+X9de1vuOw7oVEvybfx?{`B5M>x(TOXw?+2h{ z3E~bVRA#VMxiT}tStw@k1aumSmk6Xa0WPZ_<~&}kX*lp{8U+8A%;kUKEnl$T@`PhX zH_ytpELMTnCE+Z7r1GA(zqnmU|kq33|oV@GNSHHF&U)4~#-`FnfuR#98qKlyPC}pZ}S^mn z$CkWcvn7GrW)iZ#+*)J&9)+go=maj)j}u2a#mjUCkIjzme-Z@)Ht=~8rt8zM8j0xWTvO|rw913M?<6$aUT-5fSW7p@oG2vTooxh(SaNPu)VQ~RwWZw(2@AyfJCQR2BbTQp~#%a~l1 zmu(#`+`PAa`}HDFy-1Vk_C;YuO0-4W3bj)+`Kyzxsr4hSSZ1%@k{vN~IpVi%7L0;K zlzn=R#LAphNwI^T+#9b`x&w>3jw+_&N%EJ1Wjt!~!>)D`7#}(jBv5WkxN157hswAE zmo-npWnn3HYG4+zd|AJ4ZqL~%Z^cnfU4ugOm`Oh@GWIZyQu;LeZ48)K*rCKO_|a&@ zn2(Jk4kAb^3h;_Utd6Q{^$(AebK6+)f!?hM)?6IJ{yu&m!C0c!WhLYgso?JJW<3CP zI&rQ&tXMakxr*q#fzE5 zRb?>4B9RnMNLWh3!nPdxN;F(;CE8A5B=$x zQ%kpR-g;@4A&Vv?T*8OQ!x7O|G2orDd{Mh{wf-We#OX zTG_=b&DoyaaV34wS{%ecZsbxdOa_T*9*U|y#8~6_u{^+(`3{fScuFL?)D$sG>T7{6 zOmZ5g3+;dp=s`VzA`t|L{>YAG`xb=y%Dk4SK}Riu9a|_8X&qTULG`N=vll|LdmhXYlBvNnoV`v@`3qn3x#KrE~$RMU>=z z)6o1AT*EpO;cOVt&5$i_H4u${=esLR!(ee_qCYrMwN0kL+!r{@h473bjXH1v{-i=4 zkbcceJbsz3%l#o*&B!4mb;`@scqlMD*Aw6!VbOb}o8bW`){qZu zSdBc#$#bUtso$Mt!+E3%5eaSfto-L;e&JZ0&ifl28RDFN%w%}eg`k*23;&_!9&Azw zta8okZTuK6awvKN7=anCgXW7jo2qi)%3SmM-I<;H=>$K4s>}dTt!h0eyp6)Oo$vRl z?Ja!`@QYX3R#!Z3SP9lFL?B^;ndjT;gm7o5-W5^YgHoD zLC=Zd9RtM2?M_l=x_YWA%#%h5kPYJ;%By;A5cm9aI(v@KXB3eNmN|^s58pYxT1f&i zq0->C884BYA)T&YwfqS%z~3RjI&LZ0E~=a?F9@*g*rIaoK|lmmU;+a&F%}NjM#V7O zJ!7AAVygkw83j4KIu)~`ZiErIiVcK24yo6)`1nPb%|UZayOyf@S;gvQ)L1`N1*`$Q z9}^N)m!%8o(6|ff(zGM_4!c7#a8P++(rK_N1Qjh&C${P6U_Wb_@EZkZIeWbZ+=2o~ z6n>tb(hd?K430{2XV9E^eqL@H{(4-?sF(ADNDAGZi z^xmXN6H!2V2l>2w_ucpAKX=}m*=NqIvuB;QXV%`c*Ke(70b&06k0+A`^DCMf)ht<|!224g`1h8mw+FQGEVvnIG%N9~izCWZ)>B1NU{S5F=$?UA1{i5t`g%9my z;9wdIvueqxLalKdM;ZJ|mJCh;#7+SEWQSm;e@H-@EOCX8(_*+;K&{UE8WQBU<3_XA ztsC>+wR%8-$aEDIdOH>1?OR%MJ6X|cr#AZ4Ab6H_N~O#zWboS;K}H1n8aV@b`Z#$` zu^_3U8Zq74(fg10`ZJDrWPHewNRlXYnN!J;<_`{tlj*C-E~JGhojC;``6uZZj+H&q zdcn^uY#up&zm<{~Dxtbu_WD3(fKyo}1!ui72U2$GO9IvD)|*djx{L`*R!7U3CYEfs z&LvRLaQE6FRbiQ9Kj_)HDS{|64niUhCAs@09L~_Q;x{WoPyV6CgLSS;^Hp#}wAL0} z6`Y9mBFY>)%q~0-i{yR9uXX~(u#v{WHB&V1sST4qI}NgS{z#~CV|oDaQb}6!)@|2u zc=H7z&)v;Z%VvA`J)1V)^$*gN+b;yU`|30+BFzY&tSN@7a$MF>gc&i(L~?Foi49eW z@v&yIUSZg8$4Ezz0hqE2>9fL9Wt#pwCEmko(Xp!uNS@ zua^T#k?Z2p0@9LzGcr$i?U@n^5%1eobq&r*b;%n+L=_x%+rNM+jQ}hWkDZD|8M(Ak z&q2mw+tT%~+x~K_JUR;_kbNn-Vd}!B!D2yVzJx$p+939UzWhg8BsOIIAe&MYt|ItG z*>5D%{vOr4XmeUIxPx4H#-gWxkL9>Xn4@ww<%Ujr;XI;qJi{@mbrX^CqwpS3BIDsb zdIQrMkUIe@alpL>l;4$zRnArsv(pS1g-+O%yaG}Y;@I>+t)$^>q&dIbRUYj~XVHvp zMHkF<^V8fcOKB)!-obK0Bd^#cTUWDDwm)^FRC+*#LlZ6=iYI$nX^ZbsURf>~7L$b& z^}dX7dt;QY%59bQi68!Oy}OZF-Q)B$1&`wOBXTwm8*OeqiCpS(L7y&ImVHxCg4w20 zn<}=NwE5F7a{=4dcg&rgURd!fx}0AwhvoeIoXCA9z@s=aJQ>nA;9*8LX}tUrA|&zFN;@AgC_?l?_L(t zqPMt9b8__CD|DibR5SURTQ~dL#UU_;MEtE6N>#DNK;g1(t(vld zwBEI~v*#C={;DGn7|8FGeiXw>_ufxy$TBO5eH>xENw}e5mQaNK^Av)j=hf(J@%zs!5FIf~%0fAT;aO3wqg` zx|;Qg{*j5?U@d$z6vaeqyx=Lb+cemcJ}=!dm2Xuy<6bx#JR4!}nkKgzqfqJptLCS-#^TvL?f%HdBR;J%LNt6+(qYn#N1-kA$Ep9- zOWphTly`r4{Jd&(e^iD`Dogcp^iaN}A==^YW`=VF5W6b&bJ? zr=@qXL}U+!2j&5ZK}3Ks%~vfveD61zRG^NKE@+E41Y<4k`#Gr1kV|e?l?PL^%mgWl z`n>B&>?gpKr299g8Po;p2Icp~F4zJAA}R(lf9>ljEvu9buA5ornS-H>DpZnz%|rPOejGoOTr)Y`?1<1tUOmhmju!5bl3c4w87TPPK)`P~wo@0H`t26mUNOM^MY z6bibzL0G~P$r-HMygJ9$ReSL02o^LIPjr_;ocOxamP*atpVm8OCNO1cuiRIsJldXP zeU57T&3yEftlHek!jBDeP%IG_+`h)&HqVNi{8iX%DUdAyg3Y*P(b>#S<#Qr>4^kY1 zI1Q#xg7^Y~VkV_-y^0OG58KM=W&9L+HhNTtXEr}Ym4BRpJjSK;!@e4}W(dlhhuF<> zyU^yJRh!ppJ4F=Wz#;H$>qM^N^=r}Pi$A^HAz{cT-$+!kD0SJC#iA)Bg~{shpBz}J zeE|{FEyQtR|2&XvF9B2I^Gjg4lmjdTN-YV>w&}B@)XST?Uh*vbI31TCUqH#C34D1d zLx|zxZkTyXI!~r|AJ^9V?dM#HcdMmG2{Xw$66JyIARz({{js*6CI36^q_k=f$YM0% ztZwC?hJ3Cm8kObW!FtPnZi$FvH01E9fqVx~`aeHsPwz!U6-Lwq+ftKM{3%pYOv|Ez zd3<08_=jvf-+Ne#Wd1n+`}MER-H^BQ;;?56UV3e^3VBDDieH|8|L1 zXQ8kxmV+go?h?eT@{3CWJ&U2#@rl7d{*=wot@n3#vk6MooQ1Ui^Ow16Csfbl@b~`n zaDo9oAZo(#xnwPNCo%_49Wwgz)vsrEF#i@^Df#@6vbm*>e4AZ`k-e#tJAn`%G(Lg+ zl#Ds0k@#}sH)k6?H8Ln~PR@2eG+MAlLWn1gKa$b#iw?(6vr7GDyT=h9?@#AhTHA5{ z?IP(9b4yhit(^Gv6pV<-|CuIxIRMhS)u~Q#6G~m>DHBD(UHN+st~^ks!;-_`7~MyP zm7=PZu*ola{fopi=kGF|&cH;+wr{*ICWdqAUg6foXX_I=%>gmQxKIm+_s6_Ad^!y* z#=cKXz_ax)svfdYZuV|CKzcUkS@HN-&!W^aV;6M+0%k&%8mAY?Upt9hyDJo!Dte*x zsMBF~b&^DToZt15cAtLYpNH!~qVYR)6_*Xy_w|yKtV z$JgGdK=ouQgd2im%ih-;6^efKkjyI>s$PrPTzf|jp#|1#+9Fx+Q_P$OYCXrbO~+14 z-3vQ^?63QUhpbW1bN=%1&9~?WD|j_bqp!rQ@w?xmHj~#J8+}`b4r_~7Pj;SN2@Up@ z7u|-@%2N&95)^faxry3l_F>-U5||}rjoiyTe5xe7du=y;@vxyvTn11I61)G{^I^`$ z=b58*KpmYRjA-bK5Eyy&>hHb#3C;i9)tDglJw7bjBF|nUC9xDC2jRQ55*J)GY6msM zM*QQ}>gJoWZR?BvfLsbs)fcwsgwq}Zo@|n!h-eETaMh8Lku+NWB3}k+brJyzu^4Ll zXJIC5j02Bq?nuhJ+u~`#IJHCx7qnPDkO&f?;LV`Jv4G^w4K z){q1$HOwVU|3Gn3al|n!V1NXrE-(uzi4Pmg*^Z##S5V;G*ey3}-0QHWXub#{MT^C= zdMLddY8O|#1t*S|{Xv)fJFt1DP>>o>$dh$JZjrV6{DakV`81Ce>Th|Dr6O~70|Nbjt9sxI?1v0=vuC%P(2KwR~A)x^Z zYnQzbqPGKHa@LQ@Tkn1T{rkLC5BIa~pHb0)L;CNci1P&PAT<*N+j`?xW4$t)dUFyn z_O#jV0GTDJfaw@F1vs`1WKv>t4;HKCPP*cmeC~bEwz)^;gto`Lz;o>$Ht8{ruy!JO z$n(w@rKjGED3q-CH%7)kpMI?KSVe<&FKS=Oa)1u;4Dhx{ z(qR}obVCL-C=l5iN#9sFjfpz^b`_{isrRz6HOd*D{WzP7|6faY?gY{hjWKVl~q8 zEAUTrg`sFDI+I$5K5J}A%YEk z{R;S#1@T285gm_yuBEy9XY zH`4up4TbBE(COWuj;caiba>z5qfg|V+IKfM64NF%)K`yx=df)pWhrFSeq!-roe++WnB@3r%b)qcfxATxJDb@Tbzei?C?BU(x=+8O%@kB9Ghd;}edA!z z$qSS`aCK3XGcgO?P|ChwV^~MutEQ2i)60ZZt?rd$_Q>M&E7h*G(62@NdNTS)qZIQo zB>aTlsJjiLQb3_(4Q(;KXB4{#;6Jt>f7GcQ1UO_8FI8B9)-c8GVV~V90h0`z4e?m*l{DqMif2KQ3t)itw)y-6f=63@c9|?5IyVha6&^FoI3H$|_);4Dh#f z?Y;?Ehz+BJ!tAXn8!klg$0Ts>e!#9NUCA2Y!^@}yRDsrk&b)Fp|amG|xL%p}Nmi)WGw-G7Yq--ENblkwgAoW7ES@|L5wn0M#&c}d-P-@ICAQ>B{I(SBLc{-F(xRE(WZ z!p^;StH}TxiBkyYFZcoGJ@c<Gz7#5DiL&z55B}$LPI1iuF_j4Pv7cvV)6s;36Y@PEi`n{3R;o<+L?18XDm#HV0kX)HrO&p z<4@_mV;FrsQqTq|*RZ%|MV1pfR5b2Rx&!J&qLLhF9cpF53q}OYS$y;tiZ|DTNac`Y z4rB$YFucn=y9(;I8#fGhQ~jn)icJlu9})Ru+>+}K(OrhT2wWY5<5|RbOOn2r0VVAN z$OMMzj4qWp@ql%=8l;QHD$fQoZfG+)W5T#K2|;Rhhgk-?e2}A+OpKp^ZwAKCMub6h zS&X6kG(jMsBmfYZQ1*Q+xXrTc*S{+i{t?+esUT_Th$IhSa77jTZRxFm?KM%ab z8?xT&5m4b~I1fMUqz($^A3Qj!yKgC0K!&3EU?<;MH>T5|%q%Bc1E37VIhi7Ph|%xR zsml5tV4D29IJM)OY3kQRV_5;XBH}}Sn07c1sv1Ryo*=!A9@nCK0Lh1%7#A{1h!IEQ zY1}pbepyV?W#9n};RcYuqQK5dDhBq$nBSiyt#Wby0U?1JHGkc3HUAGn`uoq>%(uVG z|D2p1|MT<9p5Egn*RRvIx-ZpN$Y}gGE0GK{-x$ER04P{=SgznFiQuM(BnQ{Ff3$1m740+~7a|9{*d2Zz{D*KoN+WUOFI{ z69RBU=cFJ3eL%iUs9WFI4JI@Oq!};D(4nNEqlFt%(c;?OGKg+?6Y`=A07*N59zY~r zq)pOa6qj*Z8$eGF>ux9M9#q96KRcww-hQ)Dr>YhjIQCAr`i;|ZRs6P~?NbYv+8J#V zA7N|AXiX9<+H~IbRO)p&umk1Pa*#dZ=Hr57oFzSRCK}g+(aHPVgMOdTQ!$B2#T+={ zv`wd_%=D~}XqZ@Fb~Ayj447z7v-CUcy|SHC<6&EK{SS>VzB;k8nWiv_1jOI*ai;9x zlG5;Lbu|J$+cGD!dTP^ftj@a~^gDkuR(1fXss|D6F%%9?lhS!p2R*Vv+~%e8z|{LW zosiVg^O@^FNUtwB2l&(QCLGksDJkSxvOA;(g>H z1qEU0F(gcfu^#q?)9@lAss|5%Mu9pYs2}OBx`5|>5FLi407T3_HK4)BsG+4S?K@5c zXK_^_VrPh_i{Sa7E6m#$^TOdts(Gndbk0$MZ8xN8|CB4c$k9BFD+6Ydb|WD{-j zXXhfp;pzD-n?24!`dgjJU7jM--R8Y_!)Elc;jEVBU;!D4xtLGt+IcZi6eA@n&vL+{ z0yxVgyC=jXY!0I?JC)wSaB=Ruidj%3d|vCoIGxpVO^y(Qisl7ia5zj-A5Bt61PaVy zK-ezCc%R30pXxn*Kn&{lUzji&NDR8=83h_R|m1GPlMZ z$uHVW!cW76Pp#kI`Oxh*zC~PeM@qerh!qB)RkxD!^>B%d)O@`r>5!ag@qJ20Bkmn$ z9}PHF1A{dbW4Qtr+-^Zm#Zxr<6LrHLv)*q@@+!YH@#Bfgd9mRUlfnXz38v3#ZU(=q z=X!*zC1~k00gyPvrfn}%9S^s>^;wylL%DR3F+P2G&Q^)o1w@6v7Ys38>&R2*RGt@5 zs=8B=gG*>EQg+i`da*5OyG3vNl&MyuX{Oz}sxlpJCZQX3Q{3PLzv`srZ{#f0Hdt%l z!m>zALuE{cru6q=bZc`3A|H*X4;a0+>mcRnZ^KSZ%z5TKDPR@;bQ5w(P}`Laz5R75 zGEJ}nAlxHpmMl!C-hCUwpvK=#5{Zlke7QT`ne724aELKFrlN**Mt=X5;wl`FsXNEc zx@T1NWTUd{rpb=Gk$v#hk5#JJ`k*2*>{}@{Ah-)KLUP&fXDo%jx=6XBTIiueoY_W` zps%uBmy`311y=wJT9SDJA?!{$WZne#>sO#HeUzWQY+Ljz4)2Z7wClHI(IBn&Xu4if zx5S#lY4fyOcWuU^-AZ^8?Y&dPn1KkPE2<{RYPj@Up{btQK^*Y-ZQK6XNgkh8b1B6> z*R`J6s+scxA0NyrS-#qktmn+%Pqo(mBUaA8t5e+oTU??0-UKgV>Jg`5+Fnoo&w8mT8}~=e2i#5eA4qZiw=2{Yt8tzkx~Y!|LgX8-*)jy59xzN6xRz zO%esYJ8Snf@fEbxf3MFJ7dY>>1l-Tk+^8Tx9YVRsjxf1%RjH}9$^vU$`g)M)un9p# zmQO4-e2?x+YIKd$h7dzI-4C!AOY({=RQ-twRI?M-_vdwzgWWN!ahzv(fwQTL3G+=v zv8lv>n@HpnZ+Vh^EeG?8sZ?wq@C{GUPplE;EVTmbT;T8zdnl-jAF3Q3)1_=kI)OJI zDP=k|kIAQ;$`l?|M&q&Ui|(2vX5q+1b`%F z*LfTPDk|eN*i_v57r}J`fRqV0F80QoBZfJp&^`cw8v-hEbLIaED7R4HhVlm@0sp28 z_&?e)V$~G7IJ}}B`ldSo6#w5^YJH-j6Ae~6^N?z*=N2@1OGK0{+!;r0nv7389Zh9Q zz>o5wd2;{Q9C@Co^W4zaP@s1@ri%ml5X=r3zyoipC*Nga^ z%GTi}T?>W9YmR$WE7Mgj-xkh&e+*>^j0=K+tNi*bWc0k0h*%62EG#TTZ4hPt$u2*Z z?w{LG)g?e4$>z4B8*#qxSB^a4=oKL}b33pi3`;|k+&$?I*Y;u}cjyjZkp?7!f6bnDyGFFt^T|)vE1}hd+e%^bHA= zhic}Cz-$}_a*7*q>2&Jn+OV6jzqC1Nhd*<*;uEjQl+I-JpBxapO_5p;QZn98*>syA zp26OA_m50(ESi$>`rw-l8ArlgFm}EecHcMqz5?v7piHX7i@&jA77Bk#=i;*<#*yOf z3qJW^ow}^@#{T$n!4HXC2hVtnBFL#~m@fdC_ltC;PD?gRt=*y1Y^vUQl>h!fPKMgQ zqyW?t!^c6qvNv2e&A;e70I=oE-mmUowoQwwVz_dSq5Y3hha)=XzDZVLf&tJ0h)4kU z|1QJC0JUTDF}c%{9mc`Hd!AkRwg(85!%XH zhv++9m%l){;CXFRUHv-f&Yt*_t+2y#cfHxiz$e|^(gUcWim}ZRx7-cDQtg+ivyUYS zjh39i3K0*3Ai({CH!a@;RA>goxCEWpl{JET1g_}SwBPga&I2O;*z_~3qEIwsV>o4r z&V+48ztzF^Z`zq?A62KD_a(h)`eOJO4b(=a_>BrWCjq}p!f1|v$gr%<7Im*}k326| zHT9jL)&cO{f4@&rEFbge)$I&5Zp*4kS?EIr*fQ6@dJcP94Td;}H172cGCNDrm|kt1 zc=~e8Y0@I@fi${BX^e=@@LQhk=hEKR&UuGJ_PvrpM$Vb5Pwycl+oBW|x57t4!JFS) zioc7VS)?XRh{{?ahq8PV7mNh8LYznp%#v>1pQ-g;Gk;j((P*aQ zbT8OP_hn;m6I4S}lUv6#5HsOclg!=O@Z^6Ffd91h|2rSEm6@Fhx}X({ zroaPbOH${_bTV%Jy7H1Is%UIsiA6$+p&W^<_R^PxD5EQS$6-0-N_MPhjqfbP9kane+z*_YWwT`9KT={|!eESjo9`9XD+Nl(QGaYvgen_oHP71OgR zkV;-Jb&evuV@5r`N;-^ZZ}bs;J)ZM7#gR8a$-~7|6m-r!U1N#!Qwx;VII_rt&D(OIbA!IM&+h}h&E#bqmD7#nk82&sp^kXj$%0zDr|;&hMnX__K8P55@Y)Z__W zJ#3Um%E#+eJ=;i92ksk_^<(TXEsd$DI(8cax&e551>sXx`&I^GQJznH^^3OLqaj8Q>Sbc=Sp5Ci2ed93*P2RC`~Ps4|nZ*nJGns z$`0OpRGAN+fe2nZ#>mR(~jG7C7&)E(CpA9wGWShMT~HD{h3>K6whhBC_* z`~P{Yj2r(fKrD-Wc~Rwu0M0FN9^LYyA7PQe?Fij>>DJ{~DUj)>C~T$W(Tlzv-x9Sl zek-Wbo!Z`$bo^XumwEH)Yd;3Jw+bWi2_mm97fGQOYiVPhZh?*O9M|@x4hm%$v#m7V z%Xd7RkbbK8W15LcUC%>Q#y}fw6C$ZKfa*6DBLFMqNi=sc*17)_vjxU=e3UEr5?7@yARu@A;W__ zd$;14Zyj3H4id6q9p^|)U{gv-ydvpwoxVfzc z6DPY@^LxE-pI&}%r~z+(8}|IImi#!v=H8BVU3Sh|3^-E require("typescript"), + }, + parserOptions: { + sourceType: "module", + ecmaVersion: 2019, + }, + env: { + browser: true, + es2017: true, + node: true, + }, +} diff --git a/replay_comparer/.prettierrc b/replay_comparer/.prettierrc new file mode 100644 index 00000000..854968fe --- /dev/null +++ b/replay_comparer/.prettierrc @@ -0,0 +1,12 @@ +{ + "trailingComma": "es5", + "tabWidth": 4, + "semi": false, + "singleQuote": false, + "arrowParens": "always", + "printWidth": 120, + "useTabs": false, + "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true +} diff --git a/replay_comparer/README.md b/replay_comparer/README.md new file mode 100644 index 00000000..911d2747 --- /dev/null +++ b/replay_comparer/README.md @@ -0,0 +1,100 @@ +# fastapi-svelte-typescript-template + +# Live versions +[Master branch](https://burnysc2-monorepo.netlify.app/) + +[Develop branch](https://burnysc2-monorepo-dev.netlify.app/) + +# Requirement + +- Python 3.7 or newer +- Node.js 12+ + +# Installation + +Install node and python 3.7+ + +``` +pip install poetry --user +poetry install +npm install +``` + +# Start frontend + +``` +npm run dev +``` + +Then to go http://localhost:3000 to preview the page + +# Deploy + +Create the front end and host it somewhere (e.g. github pages) + +``` +npm run build +``` + +# Functionality + +## Requests + +[x] Communicate between front and backend + +[x] Accept file download (sent via backend) + +[ ] Accept file upload + +[ ] User register + +[ ] User login + +[ ] Use cookies to store login? https://sanic.readthedocs.io/en/latest/sanic/cookies.html + +# Tests + +Run python backend tests via + +``` +poetry run pytest test_backend --benchmark-skip +``` + +and Javascript unit tests via + +``` +npm run test +``` + +[x] How to test a webserver? +Run frontend tests via + +``` +poetry run pytest test_frontend --benchmark-skip --headless +``` + +You can benchmark tests with + +``` +poetry run pytest test_frontend --benchmark-only +``` + +# Upgrade packages to latest major version + +``` +npx npm-check-updates -u +``` + +Or run + +``` +npm run update +``` + +to update versions, reinstall node_modules from scratch + +# Autoformatting + +``` +npm run format +``` diff --git a/replay_comparer/package-lock.json b/replay_comparer/package-lock.json new file mode 100644 index 00000000..c188a537 --- /dev/null +++ b/replay_comparer/package-lock.json @@ -0,0 +1,15516 @@ +{ + "name": "my-app", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "0.0.1", + "dependencies": { + "@sveltejs/adapter-static": "^1.0.0-next.21", + "@sveltejs/kit": "next", + "@zerodevx/svelte-toast": "^0.7.0", + "highcharts": "^9.3.3", + "socket.io-client": "^4.4.1", + "svelte": "^3.46.4", + "svelte-check": "^2.4.5", + "svelte-file-dropzone": "^1.0.0-dev.1", + "svelte-preprocess": "^4.10.3", + "typescript": "^4.5.5" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^3.2.0", + "@typescript-eslint/eslint-plugin": "^5.12.0", + "@typescript-eslint/parser": "^5.12.0", + "cross-env": "^7.0.3", + "eslint": "^8.9.0", + "eslint-config-prettier": "^8.4.0", + "eslint-plugin-svelte3": "^3.4.0", + "npm-check-updates": "^12.3.1", + "prettier": "^2.5.1", + "prettier-plugin-svelte": "^2.6.0", + "tslib": "^2.3.1", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.7.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "devOptional": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "devOptional": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.4.4.tgz", + "integrity": "sha512-2XbUJmlpIbmc9JvNNmtLzHlF31srxoDxuiQiwBHic7RZyHyltbTdzoO6maRqpdEhOOG5GD80EXvzAU0wR15ccg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + }, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", + "dependencies": { + "tiny-glob": "^0.2.9" + } + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.295", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.295.tgz", + "integrity": "sha512-4pO/swXByhU+7bhNikTjh1d4QxAMP9TZ74p7sdPuyJf5cg7Zrfk1nBtaMt0R+8+5j1xfC/XWRcxa3WnhT9bQMA==", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.8.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=14.13" + }, + "peerDependencies": { + "svelte": "^3.44.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.39", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.39.tgz", + "integrity": "sha512-gnvvcAW2LK+KnUn8lKb2ypcXKwSp2K57mem5C4VNKfjxdRpM6+XwNavWwVf6otnDhz3qPYl/TKKW6/dRr6eeAw==", + "dependencies": { + "@rollup/pluginutils": "^4.1.2", + "debug": "^4.3.3", + "kleur": "^4.1.4", + "magic-string": "^0.25.7", + "svelte-hmr": "^0.14.9" + }, + "engines": { + "node": "^14.13.1 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^2.7.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", + "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.13.10", + "@babel/generator": "7.13.9", + "@babel/parser": "7.14.6", + "@babel/traverse": "7.13.0", + "@babel/types": "7.13.0", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.21" + }, + "peerDependencies": { + "prettier": "2.x" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz", + "integrity": "sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/type-utils": "5.14.0", + "@typescript-eslint/utils": "5.14.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.14.0.tgz", + "integrity": "sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz", + "integrity": "sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz", + "integrity": "sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.14.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz", + "integrity": "sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz", + "integrity": "sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz", + "integrity": "sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz", + "integrity": "sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.14.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "node_modules/@zerodevx/svelte-toast": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.1.tgz", + "integrity": "sha512-JxyjPlpc3IzwyHLGbU5pDPW68HM1o7FjiSWmm9SIig7NuuBFIqoJkVt9CYr6toAXzi5sLBgu27hT1NntKbKcmA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "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 + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "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==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/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, + "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/boxen/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/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 + }, + "node_modules/boxen/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "devOptional": true, + "dependencies": { + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001315", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz", + "integrity": "sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ==", + "devOptional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", + "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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 + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.82", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.82.tgz", + "integrity": "sha512-Ks+ANzLoIrFDUOJdjxYMH6CMKB8UQo5modAwvSZTxgF+vEs/U7G5IbWFUp6dS4klPkTDVdxbORuk8xAXXhMsWw==", + "devOptional": true + }, + "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 + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "dependencies": { + "@socket.io/base64-arraybuffer": "~1.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "node_modules/esbuild": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz", + "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.25", + "esbuild-android-arm64": "0.14.25", + "esbuild-darwin-64": "0.14.25", + "esbuild-darwin-arm64": "0.14.25", + "esbuild-freebsd-64": "0.14.25", + "esbuild-freebsd-arm64": "0.14.25", + "esbuild-linux-32": "0.14.25", + "esbuild-linux-64": "0.14.25", + "esbuild-linux-arm": "0.14.25", + "esbuild-linux-arm64": "0.14.25", + "esbuild-linux-mips64le": "0.14.25", + "esbuild-linux-ppc64le": "0.14.25", + "esbuild-linux-riscv64": "0.14.25", + "esbuild-linux-s390x": "0.14.25", + "esbuild-netbsd-64": "0.14.25", + "esbuild-openbsd-64": "0.14.25", + "esbuild-sunos-64": "0.14.25", + "esbuild-windows-32": "0.14.25", + "esbuild-windows-64": "0.14.25", + "esbuild-windows-arm64": "0.14.25" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz", + "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz", + "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz", + "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz", + "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz", + "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz", + "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz", + "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz", + "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz", + "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz", + "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz", + "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz", + "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz", + "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz", + "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz", + "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz", + "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz", + "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz", + "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz", + "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz", + "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": ">=6.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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, + "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/eslint/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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 + }, + "node_modules/eslint/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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, + "engines": { + "node": ">=4.0" + } + }, + "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, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] + }, + "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 + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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==", + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "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, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-selector": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", + "integrity": "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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, + "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.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fp-and-or": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", + "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", + "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "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, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/highcharts": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz", + "integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg==" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "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, + "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-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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "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, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "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-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", + "dev": true + }, + "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==", + "devOptional": true + }, + "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, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "peer": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "dev": true, + "dependencies": { + "jju": "^1.1.0" + } + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "devOptional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw=", + "dev": true + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "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 + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.5.tgz", + "integrity": "sha512-0JQ0daMRDFEv14DelmcFlprdhSDNG7WEgInTjBeWYWZ78W0jfDqygZdPLhcrQ4s/G8skNhBrS4fiF6xA+YlFjQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^15.3.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.4.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.4.4.tgz", + "integrity": "sha512-2XbUJmlpIbmc9JvNNmtLzHlF31srxoDxuiQiwBHic7RZyHyltbTdzoO6maRqpdEhOOG5GD80EXvzAU0wR15ccg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", + "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "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": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "devOptional": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-check-updates": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.3.tgz", + "integrity": "sha512-siFg/+Un+j4tLA6GJCnk6hz2YU4Yc5bftDnOoiSRLKL6NeAS3FScB32mtKNBtITMJf2nsoZSr8vH+wdUGeP19g==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "cint": "^8.2.1", + "cli-table": "^0.3.11", + "commander": "^9.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "libnpmconfig": "^1.2.1", + "lodash": "^4.17.21", + "minimatch": "^5.0.1", + "p-map": "^4.0.0", + "pacote": "^13.0.3", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts": "^2.4.2", + "rc-config-loader": "^4.0.0", + "remote-git-tags": "^3.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^1.0.0", + "update-notifier": "^5.1.0", + "yaml": "^1.10.2" + }, + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-check-updates/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-check-updates/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-check-updates/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, + "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/npm-check-updates/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm-check-updates/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 + }, + "node_modules/npm-check-updates/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-check-updates/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-check-updates/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.0.tgz", + "integrity": "sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.1.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", + "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", + "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "dev": true, + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz", + "integrity": "sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.3", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.1", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.0", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.3.tgz", + "integrity": "sha512-8thQ06YoO01O1k5rvSpHS/XPJZucw2DPiiT1jI+ys8QaTN6ifAyxfyoABHBa8nIt/4wPdzly4GEPqshctHFoYA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^3.0.0", + "cacache": "^15.3.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.0", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^4.1.1", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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, + "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==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/postcss": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz", + "integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==", + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", + "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", + "dev": true, + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/proc-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", + "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", + "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "js-yaml": "^4.0.0", + "json5": "^2.1.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "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-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.70.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz", + "integrity": "sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "dependencies": { + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", + "dev": true + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/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 + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", + "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "backo2": "~1.0.2", + "debug": "~4.3.2", + "engine.io-client": "~6.1.1", + "parseuri": "0.0.6", + "socket.io-parser": "~4.1.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", + "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spawn-please": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-1.0.0.tgz", + "integrity": "sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] + }, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.46.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", + "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.5.tgz", + "integrity": "sha512-nRft8BbG2wcxyCdHDZ7X43xLcvDzua3xLwq6wzHGcAF3ka3Jyhv2rvgq0+SF9NwHLMefp9C2XkM6etzsxK/cMQ==", + "dependencies": { + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "minimist": "^1.2.5", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-check/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-file-dropzone": { + "version": "1.0.0-dev.1", + "resolved": "https://registry.npmjs.org/svelte-file-dropzone/-/svelte-file-dropzone-1.0.0-dev.1.tgz", + "integrity": "sha512-u0kxaUsgXiNBye0EzP+NlyA2/AlgtvtvmP6ywfDxBx8kRzld7Yeo34KIKTpD/R7qYy4YhqTu0OA1V0fwY1/IoQ==", + "dependencies": { + "file-selector": "^0.2.2" + } + }, + "node_modules/svelte-hmr": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", + "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "peer": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "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, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/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, + "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/update-notifier/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/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 + }, + "node_modules/update-notifier/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/update-notifier/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "dependencies": { + "esbuild": "^0.14.14", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "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/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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 + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "devOptional": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "devOptional": true + }, + "@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "devOptional": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "devOptional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "devOptional": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "devOptional": true + }, + "@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "devOptional": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", + "devOptional": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "devOptional": true + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@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==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==" + }, + "@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==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.4.4.tgz", + "integrity": "sha512-2XbUJmlpIbmc9JvNNmtLzHlF31srxoDxuiQiwBHic7RZyHyltbTdzoO6maRqpdEhOOG5GD80EXvzAU0wR15ccg==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + } + }, + "@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" + }, + "@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", + "requires": { + "tiny-glob": "^0.2.9" + } + }, + "@sveltejs/kit": { + "version": "1.0.0-next.295", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.295.tgz", + "integrity": "sha512-4pO/swXByhU+7bhNikTjh1d4QxAMP9TZ74p7sdPuyJf5cg7Zrfk1nBtaMt0R+8+5j1xfC/XWRcxa3WnhT9bQMA==", + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.8.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.39", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.39.tgz", + "integrity": "sha512-gnvvcAW2LK+KnUn8lKb2ypcXKwSp2K57mem5C4VNKfjxdRpM6+XwNavWwVf6otnDhz3qPYl/TKKW6/dRr6eeAw==", + "requires": { + "@rollup/pluginutils": "^4.1.2", + "debug": "^4.3.3", + "kleur": "^4.1.4", + "magic-string": "^0.25.7", + "svelte-hmr": "^0.14.9" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@trivago/prettier-plugin-sort-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", + "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", + "dev": true, + "requires": { + "@babel/core": "7.13.10", + "@babel/generator": "7.13.9", + "@babel/parser": "7.14.6", + "@babel/traverse": "7.13.0", + "@babel/types": "7.13.0", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.21" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "requires": { + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz", + "integrity": "sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/type-utils": "5.14.0", + "@typescript-eslint/utils": "5.14.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.14.0.tgz", + "integrity": "sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz", + "integrity": "sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz", + "integrity": "sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.14.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz", + "integrity": "sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz", + "integrity": "sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz", + "integrity": "sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz", + "integrity": "sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.14.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "@zerodevx/svelte-toast": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.1.tgz", + "integrity": "sha512-JxyjPlpc3IzwyHLGbU5pDPW68HM1o7FjiSWmm9SIig7NuuBFIqoJkVt9CYr6toAXzi5sLBgu27hT1NntKbKcmA==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "requires": {} + }, + "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, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "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 + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "devOptional": true, + "requires": { + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001315", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz", + "integrity": "sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ==", + "devOptional": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "commander": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", + "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "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, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "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 + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.82", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.82.tgz", + "integrity": "sha512-Ks+ANzLoIrFDUOJdjxYMH6CMKB8UQo5modAwvSZTxgF+vEs/U7G5IbWFUp6dS4klPkTDVdxbORuk8xAXXhMsWw==", + "devOptional": true + }, + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io-client": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "requires": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "requires": { + "@socket.io/base64-arraybuffer": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "esbuild": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz", + "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==", + "requires": { + "esbuild-android-64": "0.14.25", + "esbuild-android-arm64": "0.14.25", + "esbuild-darwin-64": "0.14.25", + "esbuild-darwin-arm64": "0.14.25", + "esbuild-freebsd-64": "0.14.25", + "esbuild-freebsd-arm64": "0.14.25", + "esbuild-linux-32": "0.14.25", + "esbuild-linux-64": "0.14.25", + "esbuild-linux-arm": "0.14.25", + "esbuild-linux-arm64": "0.14.25", + "esbuild-linux-mips64le": "0.14.25", + "esbuild-linux-ppc64le": "0.14.25", + "esbuild-linux-riscv64": "0.14.25", + "esbuild-linux-s390x": "0.14.25", + "esbuild-netbsd-64": "0.14.25", + "esbuild-openbsd-64": "0.14.25", + "esbuild-sunos-64": "0.14.25", + "esbuild-windows-32": "0.14.25", + "esbuild-windows-64": "0.14.25", + "esbuild-windows-arm64": "0.14.25" + } + }, + "esbuild-android-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz", + "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==", + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz", + "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==", + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz", + "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==", + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz", + "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==", + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz", + "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==", + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz", + "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==", + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz", + "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==", + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz", + "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==", + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz", + "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==", + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz", + "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==", + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz", + "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==", + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz", + "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==", + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz", + "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==", + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz", + "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==", + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz", + "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==", + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz", + "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==", + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz", + "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==", + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz", + "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==", + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz", + "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==", + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz", + "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==", + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true + }, + "eslint": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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 + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-selector": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", + "integrity": "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==", + "requires": { + "tslib": "^2.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fp-and-or": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", + "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", + "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true + }, + "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 + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "highcharts": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz", + "integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg==" + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "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, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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 + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "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 + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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, + "peer": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "devOptional": true + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "peer": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "dev": true, + "requires": { + "jju": "^1.1.0" + } + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "devOptional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "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 + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-fetch-happen": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.5.tgz", + "integrity": "sha512-0JQ0daMRDFEv14DelmcFlprdhSDNG7WEgInTjBeWYWZ78W0jfDqygZdPLhcrQ4s/G8skNhBrS4fiF6xA+YlFjQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^15.3.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.4.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.4.4.tgz", + "integrity": "sha512-2XbUJmlpIbmc9JvNNmtLzHlF31srxoDxuiQiwBHic7RZyHyltbTdzoO6maRqpdEhOOG5GD80EXvzAU0wR15ccg==", + "dev": true + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", + "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true + }, + "node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "devOptional": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-check-updates": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.3.tgz", + "integrity": "sha512-siFg/+Un+j4tLA6GJCnk6hz2YU4Yc5bftDnOoiSRLKL6NeAS3FScB32mtKNBtITMJf2nsoZSr8vH+wdUGeP19g==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "cint": "^8.2.1", + "cli-table": "^0.3.11", + "commander": "^9.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "libnpmconfig": "^1.2.1", + "lodash": "^4.17.21", + "minimatch": "^5.0.1", + "p-map": "^4.0.0", + "pacote": "^13.0.3", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts": "^2.4.2", + "rc-config-loader": "^4.0.0", + "remote-git-tags": "^3.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^1.0.0", + "update-notifier": "^5.1.0", + "yaml": "^1.10.2" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.0.tgz", + "integrity": "sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q==", + "dev": true, + "requires": { + "hosted-git-info": "^4.1.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "npm-packlist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", + "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", + "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "npm-registry-fetch": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz", + "integrity": "sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.3", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.1", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.0", + "proc-log": "^2.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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 + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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.3" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, + "pacote": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.3.tgz", + "integrity": "sha512-8thQ06YoO01O1k5rvSpHS/XPJZucw2DPiiT1jI+ys8QaTN6ifAyxfyoABHBa8nIt/4wPdzly4GEPqshctHFoYA==", + "dev": true, + "requires": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^3.0.0", + "cacache": "^15.3.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.0", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^4.1.1", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11" + } + }, + "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==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "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 + }, + "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==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "postcss": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz", + "integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==", + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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 + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true + }, + "prettier-plugin-svelte": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", + "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", + "dev": true, + "requires": {} + }, + "proc-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", + "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "rc-config-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", + "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "js-yaml": "^4.0.0", + "json5": "^2.1.2", + "require-from-string": "^2.0.2" + } + }, + "read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "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==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.70.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz", + "integrity": "sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA==", + "requires": { + "fsevents": "~2.3.2" + } + }, + "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==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "requires": { + "node-forge": "^1.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", + "dev": true + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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 + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", + "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "requires": { + "@socket.io/component-emitter": "~3.0.0", + "backo2": "~1.0.2", + "debug": "~4.3.2", + "engine.io-client": "~6.1.1", + "parseuri": "0.0.6", + "socket.io-parser": "~4.1.1" + } + }, + "socket.io-parser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", + "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", + "requires": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "devOptional": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spawn-please": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-1.0.0.tgz", + "integrity": "sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==" + }, + "svelte": { + "version": "3.46.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", + "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==" + }, + "svelte-check": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.5.tgz", + "integrity": "sha512-nRft8BbG2wcxyCdHDZ7X43xLcvDzua3xLwq6wzHGcAF3ka3Jyhv2rvgq0+SF9NwHLMefp9C2XkM6etzsxK/cMQ==", + "requires": { + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "minimist": "^1.2.5", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "svelte-file-dropzone": { + "version": "1.0.0-dev.1", + "resolved": "https://registry.npmjs.org/svelte-file-dropzone/-/svelte-file-dropzone-1.0.0-dev.1.tgz", + "integrity": "sha512-u0kxaUsgXiNBye0EzP+NlyA2/AlgtvtvmP6ywfDxBx8kRzld7Yeo34KIKTpD/R7qYy4YhqTu0OA1V0fwY1/IoQ==", + "requires": { + "file-selector": "^0.2.2" + } + }, + "svelte-hmr": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", + "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "peer": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "peer": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "requires": { + "esbuild": "^0.14.14", + "fsevents": "~2.3.2", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "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 + } + } +} diff --git a/replay_comparer/package.json b/replay_comparer/package.json new file mode 100644 index 00000000..fb80895d --- /dev/null +++ b/replay_comparer/package.json @@ -0,0 +1,43 @@ +{ + "name": "my-app", + "version": "0.0.1", + "scripts": { + "dev": "cross-env BACKEND_SERVER='localhost:8000' svelte-kit dev", + "build": "svelte-kit build", + "preview": "svelte-kit preview", + "check": "svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "npm run format && eslint src", + "update": "npx npm-check-updates -u && npm run prune", + "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", + "format": "prettier --write './**/*.{svelte,ts}'" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^3.2.0", + "@typescript-eslint/eslint-plugin": "^5.12.0", + "@typescript-eslint/parser": "^5.12.0", + "cross-env": "^7.0.3", + "eslint": "^8.9.0", + "eslint-config-prettier": "^8.4.0", + "eslint-plugin-svelte3": "^3.4.0", + "npm-check-updates": "^12.3.1", + "prettier": "^2.5.1", + "prettier-plugin-svelte": "^2.6.0", + "tslib": "^2.3.1", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.7.4" + }, + "dependencies": { + "@sveltejs/adapter-static": "^1.0.0-next.21", + "@sveltejs/kit": "next", + "@zerodevx/svelte-toast": "^0.7.0", + "highcharts": "^9.3.3", + "socket.io-client": "^4.4.1", + "svelte": "^3.46.4", + "svelte-check": "^2.4.5", + "svelte-file-dropzone": "^1.0.0-dev.1", + "svelte-preprocess": "^4.10.3", + "typescript": "^4.5.5" + }, + "type": "module" +} diff --git a/replay_comparer/src/app.html b/replay_comparer/src/app.html new file mode 100644 index 00000000..23649f85 --- /dev/null +++ b/replay_comparer/src/app.html @@ -0,0 +1,13 @@ + + + + + + + + %svelte.head% + + +

+ + diff --git a/replay_comparer/src/components/ReplayComparison.svelte b/replay_comparer/src/components/ReplayComparison.svelte new file mode 100644 index 00000000..51fd9aad --- /dev/null +++ b/replay_comparer/src/components/ReplayComparison.svelte @@ -0,0 +1,166 @@ + + +
+
+ +
+ +
+ +
+
diff --git a/replay_comparer/src/functions/constants.ts b/replay_comparer/src/functions/constants.ts new file mode 100644 index 00000000..e69de29b diff --git a/replay_comparer/src/functions/fake_replay_data.ts b/replay_comparer/src/functions/fake_replay_data.ts new file mode 100644 index 00000000..6a6a2c8e --- /dev/null +++ b/replay_comparer/src/functions/fake_replay_data.ts @@ -0,0 +1,111409 @@ +export const replay1 = { + metadata: { + played_at: "2022-01-26T19:24:35+00:00", + map: "Glittering Ashes LE", + game_length: 666, + winner: 1, + }, + summary: { + mmr: { + "1": null, + "2": null, + }, + avg_resource_collection_rate: { + minerals: { + "1": 1948, + "2": 595.3, + }, + gas: { + "1": 550.4, + "2": 181.1, + }, + }, + max_collection_rate: { + "1": 4943, + "2": 2244, + }, + avg_unspent_resources: { + minerals: { + "1": 288.4, + "2": 641.7, + }, + gas: { + "1": 182.5, + "2": 814.9, + }, + }, + apm: { + "1": 337, + "2": 72, + }, + spm: { + "1": 9.4, + "2": 0, + }, + resources_lost: { + minerals: { + "1": 0, + "2": 1575, + }, + gas: { + "1": 0, + "2": 450, + }, + }, + resources_collected: { + minerals: { + "1": 20495, + "2": 7675, + }, + gas: { + "1": 4075, + "2": 2014, + }, + }, + workers_produced: { + "1": 69, + "2": 75, + }, + workers_killed: { + "1": 75, + "2": 0, + }, + workers_lost: { + "1": 0, + "2": 75, + }, + supply_block: { + "1": 50, + "2": 5, + }, + sq: { + "1": 145, + "2": 23, + }, + avg_pac_per_min: { + "1": 34.14, + "2": 0, + }, + avg_pac_action_latency: { + "1": 0.19, + "2": 0, + }, + avg_pac_actions: { + "1": 9.21, + "2": 0, + }, + avg_pac_gap: { + "1": 0.06, + "2": 0, + }, + race: { + "1": {}, + "2": {}, + }, + }, + timeline: [ + { + "1": { + gameloop: 0, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: {}, + building: {}, + upgrade: [], + current_selection: {}, + workers_active: 0, + workers_produced: 0, + workers_lost: 0, + supply: 0, + supply_cap: 0, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 0, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 0, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 0, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: {}, + building: {}, + upgrade: [], + current_selection: {}, + workers_active: 0, + workers_produced: 0, + workers_lost: 0, + supply: 0, + supply_cap: 0, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 0, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 0, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 113, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 12, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1050, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1050, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 113, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 12, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1050, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1050, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 224, + resource_collection_rate: { + minerals: 293, + gas: 0, + }, + unspent_resources: { + minerals: 35, + gas: 0, + }, + resource_collection_rate_all: 293, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 4, + }, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 13, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1085, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1085, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 224, + resource_collection_rate: { + minerals: 293, + gas: 0, + }, + unspent_resources: { + minerals: 35, + gas: 0, + }, + resource_collection_rate_all: 293, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 13, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1085, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1085, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 337, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 337, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 465, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 465, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 561, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1200, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1200, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 561, + resource_collection_rate: { + minerals: 699, + gas: 0, + }, + unspent_resources: { + minerals: 40, + gas: 0, + }, + resource_collection_rate_all: 699, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1240, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1240, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 672, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 80, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 5, + spm: 6, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1330, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 672, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 135, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1335, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1335, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 785, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 80, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 5, + spm: 11, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1330, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 785, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 135, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1335, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1335, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 896, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 135, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 10, + spm: 14, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1385, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1385, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 896, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 230, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1430, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1430, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1012, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 65, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 14, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1515, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1515, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1012, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 170, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1370, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1370, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1120, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 65, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1515, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1515, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1120, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 170, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1370, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1370, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1235, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1550, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1550, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1235, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 255, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1605, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1605, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1345, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 20, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 17, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1595, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1595, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1345, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 355, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1705, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1705, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1459, + resource_collection_rate: { + minerals: 839, + gas: 0, + }, + unspent_resources: { + minerals: 120, + gas: 0, + }, + resource_collection_rate_all: 839, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1745, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1745, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1459, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 45, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1795, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1795, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1568, + resource_collection_rate: { + minerals: 839, + gas: 0, + }, + unspent_resources: { + minerals: 120, + gas: 0, + }, + resource_collection_rate_all: 839, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 2, + }, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1745, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1745, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1568, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 45, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1795, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1795, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1680, + resource_collection_rate: { + minerals: 783, + gas: 67, + }, + unspent_resources: { + minerals: 210, + gas: 12, + }, + resource_collection_rate_all: 850, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1835, + gas: 12, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1847, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1680, + resource_collection_rate: { + minerals: 699, + gas: 0, + }, + unspent_resources: { + minerals: 130, + gas: 0, + }, + resource_collection_rate_all: 699, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1880, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1880, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1792, + resource_collection_rate: { + minerals: 811, + gas: 179, + }, + unspent_resources: { + minerals: 310, + gas: 32, + }, + resource_collection_rate_all: 990, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1985, + gas: 32, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2017, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1792, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 130, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1880, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1880, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1907, + resource_collection_rate: { + minerals: 811, + gas: 179, + }, + unspent_resources: { + minerals: 310, + gas: 32, + }, + resource_collection_rate_all: 990, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 15, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1985, + gas: 32, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2017, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1907, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 130, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1880, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1880, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2019, + resource_collection_rate: { + minerals: 811, + gas: 156, + }, + unspent_resources: { + minerals: 405, + gas: 48, + }, + resource_collection_rate_all: 967, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 5, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 11, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2080, + gas: 48, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2128, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2019, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 145, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2070, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2070, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2128, + resource_collection_rate: { + minerals: 867, + gas: 156, + }, + unspent_resources: { + minerals: 310, + gas: 68, + }, + resource_collection_rate_all: 1023, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 10, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2185, + gas: 68, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2253, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2128, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 140, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2165, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2165, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2240, + resource_collection_rate: { + minerals: 867, + gas: 156, + }, + unspent_resources: { + minerals: 5, + gas: 88, + }, + resource_collection_rate_all: 1023, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 6, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2280, + gas: 88, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2368, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2240, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 140, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2165, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2165, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2352, + resource_collection_rate: { + minerals: 867, + gas: 156, + }, + unspent_resources: { + minerals: 5, + gas: 88, + }, + resource_collection_rate_all: 1023, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 6, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2280, + gas: 88, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2368, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2352, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 40, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 17, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2265, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2265, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2468, + resource_collection_rate: { + minerals: 923, + gas: 156, + }, + unspent_resources: { + minerals: 110, + gas: 108, + }, + resource_collection_rate_all: 1079, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2385, + gas: 108, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2493, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2468, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 130, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 17, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2355, + gas: 0, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2355, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2576, + resource_collection_rate: { + minerals: 923, + gas: 156, + }, + unspent_resources: { + minerals: 70, + gas: 28, + }, + resource_collection_rate_all: 1079, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2495, + gas: 128, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2623, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2576, + resource_collection_rate: { + minerals: 699, + gas: 89, + }, + unspent_resources: { + minerals: 155, + gas: 16, + }, + resource_collection_rate_all: 788, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 18, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2430, + gas: 16, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2446, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2698, + resource_collection_rate: { + minerals: 923, + gas: 156, + }, + unspent_resources: { + minerals: 70, + gas: 28, + }, + resource_collection_rate_all: 1079, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2495, + gas: 128, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2623, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2698, + resource_collection_rate: { + minerals: 699, + gas: 89, + }, + unspent_resources: { + minerals: 155, + gas: 16, + }, + resource_collection_rate_all: 788, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 18, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2430, + gas: 16, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2446, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2815, + resource_collection_rate: { + minerals: 1007, + gas: 179, + }, + unspent_resources: { + minerals: 60, + gas: 48, + }, + resource_collection_rate_all: 1186, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 21, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2610, + gas: 148, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2758, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2815, + resource_collection_rate: { + minerals: 671, + gas: 156, + }, + unspent_resources: { + minerals: 155, + gas: 36, + }, + resource_collection_rate_all: 827, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 18, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2505, + gas: 36, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2541, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2931, + resource_collection_rate: { + minerals: 1063, + gas: 179, + }, + unspent_resources: { + minerals: 70, + gas: 18, + }, + resource_collection_rate_all: 1242, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 22, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2720, + gas: 168, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2888, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2931, + resource_collection_rate: { + minerals: 727, + gas: 134, + }, + unspent_resources: { + minerals: 195, + gas: 52, + }, + resource_collection_rate_all: 861, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 19, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2595, + gas: 52, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2647, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3028, + resource_collection_rate: { + minerals: 1063, + gas: 179, + }, + unspent_resources: { + minerals: 70, + gas: 18, + }, + resource_collection_rate_all: 1242, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + }, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 22, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2720, + gas: 168, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2888, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3028, + resource_collection_rate: { + minerals: 727, + gas: 134, + }, + unspent_resources: { + minerals: 195, + gas: 52, + }, + resource_collection_rate_all: 861, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 19, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2595, + gas: 52, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2647, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3137, + resource_collection_rate: { + minerals: 1007, + gas: 156, + }, + unspent_resources: { + minerals: 35, + gas: 34, + }, + resource_collection_rate_all: 1163, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 2, + MULE: 1, + }, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 22, + supply_cap: 23, + supply_block: 10, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2785, + gas: 184, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 2969, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3137, + resource_collection_rate: { + minerals: 755, + gas: 156, + }, + unspent_resources: { + minerals: 105, + gas: 22, + }, + resource_collection_rate_all: 911, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 22, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2680, + gas: 72, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2752, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3249, + resource_collection_rate: { + minerals: 1035, + gas: 156, + }, + unspent_resources: { + minerals: 90, + gas: 54, + }, + resource_collection_rate_all: 1191, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 23, + supply_cap: 23, + supply_block: 15, + spm: 5, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2890, + gas: 204, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3094, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3249, + resource_collection_rate: { + minerals: 531, + gas: 134, + }, + unspent_resources: { + minerals: 95, + gas: 38, + }, + resource_collection_rate_all: 665, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 23, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2720, + gas: 88, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2808, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3360, + resource_collection_rate: { + minerals: 979, + gas: 246, + }, + unspent_resources: { + minerals: 200, + gas: 90, + }, + resource_collection_rate_all: 1225, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 23, + supply_cap: 23, + supply_block: 20, + spm: 3, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3000, + gas: 240, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3240, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3360, + resource_collection_rate: { + minerals: 531, + gas: 134, + }, + unspent_resources: { + minerals: 95, + gas: 38, + }, + resource_collection_rate_all: 665, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 23, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2720, + gas: 88, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2808, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3473, + resource_collection_rate: { + minerals: 979, + gas: 246, + }, + unspent_resources: { + minerals: 200, + gas: 90, + }, + resource_collection_rate_all: 1225, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 23, + supply_cap: 23, + supply_block: 20, + spm: 0, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3000, + gas: 240, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3240, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3473, + resource_collection_rate: { + minerals: 671, + gas: 134, + }, + unspent_resources: { + minerals: 95, + gas: 4, + }, + resource_collection_rate_all: 805, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 24, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2770, + gas: 54, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2824, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3588, + resource_collection_rate: { + minerals: 1035, + gas: 313, + }, + unspent_resources: { + minerals: 90, + gas: 5, + }, + resource_collection_rate_all: 1348, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 26, + supply_cap: 31, + supply_block: 20, + spm: 0, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3165, + gas: 280, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3445, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3588, + resource_collection_rate: { + minerals: 839, + gas: 156, + }, + unspent_resources: { + minerals: 150, + gas: 24, + }, + resource_collection_rate_all: 995, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 25, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2875, + gas: 74, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 2949, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3696, + resource_collection_rate: { + minerals: 1063, + gas: 335, + }, + unspent_resources: { + minerals: 65, + gas: 45, + }, + resource_collection_rate_all: 1398, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + }, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 28, + supply_cap: 31, + supply_block: 20, + spm: 0, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3240, + gas: 320, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3560, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3696, + resource_collection_rate: { + minerals: 867, + gas: 201, + }, + unspent_resources: { + minerals: 200, + gas: 52, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 26, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2975, + gas: 102, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3077, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3808, + resource_collection_rate: { + minerals: 1063, + gas: 335, + }, + unspent_resources: { + minerals: 65, + gas: 45, + }, + resource_collection_rate_all: 1398, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 28, + supply_cap: 31, + supply_block: 20, + spm: 0, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3240, + gas: 320, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3560, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3808, + resource_collection_rate: { + minerals: 867, + gas: 201, + }, + unspent_resources: { + minerals: 200, + gas: 52, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 26, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2975, + gas: 102, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3077, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3920, + resource_collection_rate: { + minerals: 951, + gas: 358, + }, + unspent_resources: { + minerals: 130, + gas: 85, + }, + resource_collection_rate_all: 1309, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 29, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 50, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3355, + gas: 360, + }, + total_army_value: 50, + total_resources_lost: 0, + total_resources_collected: 3715, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3920, + resource_collection_rate: { + minerals: 895, + gas: 246, + }, + unspent_resources: { + minerals: 80, + gas: 84, + }, + resource_collection_rate_all: 1141, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 27, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3080, + gas: 134, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3214, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4032, + resource_collection_rate: { + minerals: 979, + gas: 313, + }, + unspent_resources: { + minerals: 40, + gas: 92, + }, + resource_collection_rate_all: 1292, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 32, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 225, + gas: 25, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3540, + gas: 392, + }, + total_army_value: 250, + total_resources_lost: 0, + total_resources_collected: 3932, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4032, + resource_collection_rate: { + minerals: 811, + gas: 291, + }, + unspent_resources: { + minerals: 130, + gas: 116, + }, + resource_collection_rate_all: 1102, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 28, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3180, + gas: 166, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3346, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4146, + resource_collection_rate: { + minerals: 979, + gas: 313, + }, + unspent_resources: { + minerals: 40, + gas: 92, + }, + resource_collection_rate_all: 1292, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 32, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 225, + gas: 25, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3540, + gas: 392, + }, + total_army_value: 250, + total_resources_lost: 0, + total_resources_collected: 3932, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4146, + resource_collection_rate: { + minerals: 811, + gas: 291, + }, + unspent_resources: { + minerals: 130, + gas: 116, + }, + resource_collection_rate_all: 1102, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 28, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3180, + gas: 166, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3346, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4258, + resource_collection_rate: { + minerals: 923, + gas: 313, + }, + unspent_resources: { + minerals: 50, + gas: 132, + }, + resource_collection_rate_all: 1236, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 34, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 225, + gas: 25, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3650, + gas: 432, + }, + total_army_value: 250, + total_resources_lost: 0, + total_resources_collected: 4082, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4258, + resource_collection_rate: { + minerals: 867, + gas: 335, + }, + unspent_resources: { + minerals: 180, + gas: 156, + }, + resource_collection_rate_all: 1202, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 29, + supply_cap: 46, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3280, + gas: 206, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3486, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4368, + resource_collection_rate: { + minerals: 1343, + gas: 313, + }, + unspent_resources: { + minerals: 70, + gas: 72, + }, + resource_collection_rate_all: 1656, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 37, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 225, + gas: 25, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3820, + gas: 472, + }, + total_army_value: 250, + total_resources_lost: 0, + total_resources_collected: 4292, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4368, + resource_collection_rate: { + minerals: 895, + gas: 313, + }, + unspent_resources: { + minerals: 95, + gas: 92, + }, + resource_collection_rate_all: 1208, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 30, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3395, + gas: 242, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3637, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4480, + resource_collection_rate: { + minerals: 1343, + gas: 313, + }, + unspent_resources: { + minerals: 70, + gas: 72, + }, + resource_collection_rate_all: 1656, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 37, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 350, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3820, + gas: 472, + }, + total_army_value: 400, + total_resources_lost: 0, + total_resources_collected: 4292, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4480, + resource_collection_rate: { + minerals: 895, + gas: 313, + }, + unspent_resources: { + minerals: 95, + gas: 92, + }, + resource_collection_rate_all: 1208, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 30, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3395, + gas: 242, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3637, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4596, + resource_collection_rate: { + minerals: 1315, + gas: 313, + }, + unspent_resources: { + minerals: 65, + gas: 87, + }, + resource_collection_rate_all: 1628, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 26, + workers_produced: 26, + workers_lost: 0, + supply: 38, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 400, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3915, + gas: 512, + }, + total_army_value: 450, + total_resources_lost: 0, + total_resources_collected: 4427, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4596, + resource_collection_rate: { + minerals: 951, + gas: 313, + }, + unspent_resources: { + minerals: 160, + gas: 132, + }, + resource_collection_rate_all: 1264, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 26, + workers_produced: 26, + workers_lost: 0, + supply: 31, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3510, + gas: 282, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3792, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4704, + resource_collection_rate: { + minerals: 1427, + gas: 313, + }, + unspent_resources: { + minerals: 30, + gas: 127, + }, + resource_collection_rate_all: 1740, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 26, + workers_produced: 26, + workers_lost: 0, + supply: 41, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 400, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4130, + gas: 552, + }, + total_army_value: 450, + total_resources_lost: 0, + total_resources_collected: 4682, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4704, + resource_collection_rate: { + minerals: 895, + gas: 403, + }, + unspent_resources: { + minerals: 110, + gas: 180, + }, + resource_collection_rate_all: 1298, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 27, + workers_produced: 27, + workers_lost: 0, + supply: 34, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3610, + gas: 330, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3940, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4821, + resource_collection_rate: { + minerals: 1595, + gas: 358, + }, + unspent_resources: { + minerals: 70, + gas: 167, + }, + resource_collection_rate_all: 1953, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 28, + workers_produced: 28, + workers_lost: 0, + supply: 43, + supply_cap: 46, + supply_block: 20, + spm: 0, + army_value: { + minerals: 400, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4270, + gas: 592, + }, + total_army_value: 450, + total_resources_lost: 0, + total_resources_collected: 4862, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4821, + resource_collection_rate: { + minerals: 923, + gas: 425, + }, + unspent_resources: { + minerals: 175, + gas: 232, + }, + resource_collection_rate_all: 1348, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 27, + workers_produced: 27, + workers_lost: 0, + supply: 35, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3725, + gas: 382, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4107, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4928, + resource_collection_rate: { + minerals: 1595, + gas: 358, + }, + unspent_resources: { + minerals: 70, + gas: 167, + }, + resource_collection_rate_all: 1953, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 28, + workers_produced: 28, + workers_lost: 0, + supply: 43, + supply_cap: 46, + supply_block: 20, + spm: 1, + army_value: { + minerals: 500, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4270, + gas: 592, + }, + total_army_value: 550, + total_resources_lost: 0, + total_resources_collected: 4862, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 4928, + resource_collection_rate: { + minerals: 923, + gas: 425, + }, + unspent_resources: { + minerals: 175, + gas: 232, + }, + resource_collection_rate_all: 1348, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 29, + workers_produced: 29, + workers_lost: 0, + supply: 35, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3725, + gas: 382, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4107, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5041, + resource_collection_rate: { + minerals: 1651, + gas: 358, + }, + unspent_resources: { + minerals: 50, + gas: 82, + }, + resource_collection_rate_all: 2009, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Starport: 1, + }, + workers_active: 29, + workers_produced: 29, + workers_lost: 0, + supply: 45, + supply_cap: 46, + supply_block: 20, + spm: 1, + army_value: { + minerals: 600, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4350, + gas: 507, + }, + total_army_value: 750, + total_resources_lost: 0, + total_resources_collected: 4857, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5041, + resource_collection_rate: { + minerals: 951, + gas: 470, + }, + unspent_resources: { + minerals: 240, + gas: 292, + }, + resource_collection_rate_all: 1421, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 29, + workers_produced: 29, + workers_lost: 0, + supply: 36, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3840, + gas: 442, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4282, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5158, + resource_collection_rate: { + minerals: 1623, + gas: 313, + }, + unspent_resources: { + minerals: 40, + gas: 114, + }, + resource_collection_rate_all: 1936, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 30, + workers_produced: 30, + workers_lost: 0, + supply: 50, + supply_cap: 54, + supply_block: 20, + spm: 1, + army_value: { + minerals: 600, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4590, + gas: 664, + }, + total_army_value: 750, + total_resources_lost: 0, + total_resources_collected: 5254, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5158, + resource_collection_rate: { + minerals: 1035, + gas: 470, + }, + unspent_resources: { + minerals: 320, + gas: 352, + }, + resource_collection_rate_all: 1505, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 29, + workers_produced: 29, + workers_lost: 0, + supply: 37, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3970, + gas: 502, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4472, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5268, + resource_collection_rate: { + minerals: 1623, + gas: 313, + }, + unspent_resources: { + minerals: 40, + gas: 114, + }, + resource_collection_rate_all: 1936, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Starport: 1, + }, + workers_active: 30, + workers_produced: 30, + workers_lost: 0, + supply: 50, + supply_cap: 54, + supply_block: 20, + spm: 1, + army_value: { + minerals: 650, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4590, + gas: 664, + }, + total_army_value: 800, + total_resources_lost: 0, + total_resources_collected: 5254, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5268, + resource_collection_rate: { + minerals: 1035, + gas: 470, + }, + unspent_resources: { + minerals: 320, + gas: 352, + }, + resource_collection_rate_all: 1505, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 30, + workers_produced: 30, + workers_lost: 0, + supply: 37, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3970, + gas: 502, + }, + total_army_value: 375, + total_resources_lost: 0, + total_resources_collected: 4472, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5378, + resource_collection_rate: { + minerals: 1623, + gas: 313, + }, + unspent_resources: { + minerals: 40, + gas: 114, + }, + resource_collection_rate_all: 1936, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 31, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 31, + workers_produced: 31, + workers_lost: 0, + supply: 50, + supply_cap: 54, + supply_block: 20, + spm: 1, + army_value: { + minerals: 700, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4590, + gas: 664, + }, + total_army_value: 850, + total_resources_lost: 0, + total_resources_collected: 5254, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5378, + resource_collection_rate: { + minerals: 1035, + gas: 470, + }, + unspent_resources: { + minerals: 320, + gas: 352, + }, + resource_collection_rate_all: 1505, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 31, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 31, + workers_produced: 31, + workers_lost: 0, + supply: 37, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3970, + gas: 502, + }, + total_army_value: 375, + total_resources_lost: 0, + total_resources_collected: 4472, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5488, + resource_collection_rate: { + minerals: 1763, + gas: 313, + }, + unspent_resources: { + minerals: 205, + gas: 194, + }, + resource_collection_rate_all: 2076, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Medivac: 1, + }, + workers_active: 32, + workers_produced: 32, + workers_lost: 0, + supply: 53, + supply_cap: 54, + supply_block: 20, + spm: 5, + army_value: { + minerals: 700, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5105, + gas: 744, + }, + total_army_value: 850, + total_resources_lost: 0, + total_resources_collected: 5849, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5488, + resource_collection_rate: { + minerals: 1175, + gas: 492, + }, + unspent_resources: { + minerals: 480, + gas: 397, + }, + resource_collection_rate_all: 1667, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 31, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 31, + workers_produced: 31, + workers_lost: 0, + supply: 40, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4255, + gas: 622, + }, + total_army_value: 375, + total_resources_lost: 0, + total_resources_collected: 4877, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5600, + resource_collection_rate: { + minerals: 1679, + gas: 313, + }, + unspent_resources: { + minerals: 195, + gas: 234, + }, + resource_collection_rate_all: 1992, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 33, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + WidowMineBurrowed: 1, + }, + workers_active: 33, + workers_produced: 33, + workers_lost: 0, + supply: 54, + supply_cap: 54, + supply_block: 25, + spm: 5, + army_value: { + minerals: 700, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5145, + gas: 784, + }, + total_army_value: 850, + total_resources_lost: 0, + total_resources_collected: 5929, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 5600, + resource_collection_rate: { + minerals: 1175, + gas: 492, + }, + unspent_resources: { + minerals: 480, + gas: 397, + }, + resource_collection_rate_all: 1667, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 32, + workers_produced: 32, + workers_lost: 0, + supply: 40, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4255, + gas: 622, + }, + total_army_value: 375, + total_resources_lost: 0, + total_resources_collected: 4877, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5714, + resource_collection_rate: { + minerals: 1679, + gas: 313, + }, + unspent_resources: { + minerals: 195, + gas: 234, + }, + resource_collection_rate_all: 1992, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 33, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + WidowMine: 2, + }, + workers_active: 33, + workers_produced: 33, + workers_lost: 0, + supply: 54, + supply_cap: 54, + supply_block: 25, + spm: 5, + army_value: { + minerals: 800, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5145, + gas: 784, + }, + total_army_value: 950, + total_resources_lost: 0, + total_resources_collected: 5929, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 5714, + resource_collection_rate: { + minerals: 1287, + gas: 515, + }, + unspent_resources: { + minerals: 580, + gas: 453, + }, + resource_collection_rate_all: 1802, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 28, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 28, + workers_produced: 33, + workers_lost: 5, + supply: 41, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4405, + gas: 678, + }, + total_army_value: 375, + total_resources_lost: 0, + total_resources_collected: 5083, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5826, + resource_collection_rate: { + minerals: 1819, + gas: 313, + }, + unspent_resources: { + minerals: 420, + gas: 274, + }, + resource_collection_rate_all: 2132, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 34, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Medivac: 1, + }, + workers_active: 34, + workers_produced: 34, + workers_lost: 0, + supply: 57, + supply_cap: 62, + supply_block: 25, + spm: 7, + army_value: { + minerals: 800, + gas: 150, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5520, + gas: 824, + }, + total_army_value: 950, + total_resources_lost: 0, + total_resources_collected: 6344, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 5826, + resource_collection_rate: { + minerals: 1203, + gas: 470, + }, + unspent_resources: { + minerals: 630, + gas: 430, + }, + resource_collection_rate_all: 1673, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 29, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 29, + workers_produced: 34, + workers_lost: 5, + supply: 37, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 350, + gas: 125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4505, + gas: 655, + }, + total_army_value: 475, + total_resources_lost: 0, + total_resources_collected: 5160, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5937, + resource_collection_rate: { + minerals: 1931, + gas: 358, + }, + unspent_resources: { + minerals: 350, + gas: 189, + }, + resource_collection_rate_all: 2289, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 35, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + Starport: 1, + }, + workers_active: 35, + workers_produced: 35, + workers_lost: 0, + supply: 61, + supply_cap: 70, + supply_block: 25, + spm: 8, + army_value: { + minerals: 950, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5650, + gas: 864, + }, + total_army_value: 1225, + total_resources_lost: 0, + total_resources_collected: 6514, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 5937, + resource_collection_rate: { + minerals: 1035, + gas: 403, + }, + unspent_resources: { + minerals: 625, + gas: 478, + }, + resource_collection_rate_all: 1438, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 29, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 29, + workers_produced: 34, + workers_lost: 5, + supply: 39, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 350, + gas: 125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4650, + gas: 778, + }, + total_army_value: 475, + total_resources_lost: 0, + total_resources_collected: 5428, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6050, + resource_collection_rate: { + minerals: 1931, + gas: 358, + }, + unspent_resources: { + minerals: 350, + gas: 189, + }, + resource_collection_rate_all: 2289, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 36, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 36, + workers_produced: 36, + workers_lost: 0, + supply: 61, + supply_cap: 70, + supply_block: 25, + spm: 8, + army_value: { + minerals: 950, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5650, + gas: 864, + }, + total_army_value: 1225, + total_resources_lost: 0, + total_resources_collected: 6514, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6050, + resource_collection_rate: { + minerals: 1035, + gas: 403, + }, + unspent_resources: { + minerals: 625, + gas: 478, + }, + resource_collection_rate_all: 1438, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 30, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 30, + workers_produced: 35, + workers_lost: 5, + supply: 39, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 350, + gas: 125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4650, + gas: 778, + }, + total_army_value: 475, + total_resources_lost: 0, + total_resources_collected: 5428, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6171, + resource_collection_rate: { + minerals: 1763, + gas: 335, + }, + unspent_resources: { + minerals: 155, + gas: 225, + }, + resource_collection_rate_all: 2098, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 36, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Starport: 1, + }, + workers_active: 36, + workers_produced: 36, + workers_lost: 0, + supply: 63, + supply_cap: 70, + supply_block: 25, + spm: 9, + army_value: { + minerals: 1050, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5955, + gas: 900, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 6855, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6171, + resource_collection_rate: { + minerals: 979, + gas: 403, + }, + unspent_resources: { + minerals: 710, + gas: 534, + }, + resource_collection_rate_all: 1382, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 31, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 31, + workers_produced: 36, + workers_lost: 5, + supply: 40, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4785, + gas: 834, + }, + total_army_value: 575, + total_resources_lost: 0, + total_resources_collected: 5619, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6273, + resource_collection_rate: { + minerals: 1875, + gas: 313, + }, + unspent_resources: { + minerals: 95, + gas: 111, + }, + resource_collection_rate_all: 2188, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 37, + workers_produced: 37, + workers_lost: 0, + supply: 67, + supply_cap: 70, + supply_block: 25, + spm: 11, + army_value: { + minerals: 1050, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6195, + gas: 936, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 7131, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6273, + resource_collection_rate: { + minerals: 1203, + gas: 470, + }, + unspent_resources: { + minerals: 745, + gas: 494, + }, + resource_collection_rate_all: 1673, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 32, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 32, + workers_produced: 37, + workers_lost: 5, + supply: 43, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4920, + gas: 894, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 5814, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6385, + resource_collection_rate: { + minerals: 1875, + gas: 313, + }, + unspent_resources: { + minerals: 95, + gas: 111, + }, + resource_collection_rate_all: 2188, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 38, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 38, + workers_produced: 38, + workers_lost: 0, + supply: 67, + supply_cap: 70, + supply_block: 25, + spm: 11, + army_value: { + minerals: 1050, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6195, + gas: 936, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 7131, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6385, + resource_collection_rate: { + minerals: 1203, + gas: 470, + }, + unspent_resources: { + minerals: 745, + gas: 494, + }, + resource_collection_rate_all: 1673, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 32, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 32, + workers_produced: 37, + workers_lost: 5, + supply: 43, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4920, + gas: 894, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 5814, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6498, + resource_collection_rate: { + minerals: 2071, + gas: 313, + }, + unspent_resources: { + minerals: 200, + gas: 151, + }, + resource_collection_rate_all: 2384, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 39, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Medivac: 1, + }, + workers_active: 39, + workers_produced: 39, + workers_lost: 0, + supply: 70, + supply_cap: 70, + supply_block: 30, + spm: 12, + army_value: { + minerals: 1050, + gas: 275, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6450, + gas: 976, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 7426, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6498, + resource_collection_rate: { + minerals: 1203, + gas: 515, + }, + unspent_resources: { + minerals: 830, + gas: 558, + }, + resource_collection_rate_all: 1718, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 33, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 33, + workers_produced: 38, + workers_lost: 5, + supply: 44, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5055, + gas: 958, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6013, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6612, + resource_collection_rate: { + minerals: 2211, + gas: 313, + }, + unspent_resources: { + minerals: 315, + gas: 191, + }, + resource_collection_rate_all: 2524, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 39, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SiegeTankSieged: 1, + }, + workers_active: 39, + workers_produced: 39, + workers_lost: 0, + supply: 70, + supply_cap: 70, + supply_block: 35, + spm: 13, + army_value: { + minerals: 1200, + gas: 400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6715, + gas: 1016, + }, + total_army_value: 1600, + total_resources_lost: 0, + total_resources_collected: 7731, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6612, + resource_collection_rate: { + minerals: 1175, + gas: 627, + }, + unspent_resources: { + minerals: 915, + gas: 634, + }, + resource_collection_rate_all: 1802, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 33, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 33, + workers_produced: 38, + workers_lost: 5, + supply: 45, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5190, + gas: 1034, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6224, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6720, + resource_collection_rate: { + minerals: 2267, + gas: 313, + }, + unspent_resources: { + minerals: 480, + gas: 231, + }, + resource_collection_rate_all: 2580, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 40, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 5, + }, + workers_active: 40, + workers_produced: 40, + workers_lost: 0, + supply: 72, + supply_cap: 78, + supply_block: 35, + spm: 13, + army_value: { + minerals: 1300, + gas: 400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6980, + gas: 1056, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 8036, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6720, + resource_collection_rate: { + minerals: 1175, + gas: 627, + }, + unspent_resources: { + minerals: 915, + gas: 634, + }, + resource_collection_rate_all: 1802, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 34, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 34, + workers_produced: 39, + workers_lost: 5, + supply: 45, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5190, + gas: 1034, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6224, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6832, + resource_collection_rate: { + minerals: 2267, + gas: 313, + }, + unspent_resources: { + minerals: 480, + gas: 231, + }, + resource_collection_rate_all: 2580, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 40, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 40, + workers_produced: 40, + workers_lost: 0, + supply: 72, + supply_cap: 78, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1300, + gas: 400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6980, + gas: 1056, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 8036, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6832, + resource_collection_rate: { + minerals: 1147, + gas: 694, + }, + unspent_resources: { + minerals: 1000, + gas: 714, + }, + resource_collection_rate_all: 1841, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 35, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 35, + workers_produced: 40, + workers_lost: 5, + supply: 46, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5325, + gas: 1114, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6439, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6948, + resource_collection_rate: { + minerals: 2043, + gas: 358, + }, + unspent_resources: { + minerals: 150, + gas: 146, + }, + resource_collection_rate_all: 2401, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 40, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + }, + workers_active: 40, + workers_produced: 40, + workers_lost: 0, + supply: 75, + supply_cap: 78, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1300, + gas: 400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6950, + gas: 1096, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 8046, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 6948, + resource_collection_rate: { + minerals: 1259, + gas: 649, + }, + unspent_resources: { + minerals: 1000, + gas: 786, + }, + resource_collection_rate_all: 1908, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 35, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 35, + workers_produced: 40, + workers_lost: 5, + supply: 47, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5375, + gas: 1186, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6561, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7056, + resource_collection_rate: { + minerals: 1847, + gas: 358, + }, + unspent_resources: { + minerals: 235, + gas: 186, + }, + resource_collection_rate_all: 2205, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 42, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + Factory: 1, + Starport: 1, + }, + workers_active: 42, + workers_produced: 42, + workers_lost: 0, + supply: 77, + supply_cap: 78, + supply_block: 35, + spm: 12, + army_value: { + minerals: 1300, + gas: 400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7410, + gas: 1136, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 8546, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7056, + resource_collection_rate: { + minerals: 1231, + gas: 627, + }, + unspent_resources: { + minerals: 1085, + gas: 862, + }, + resource_collection_rate_all: 1858, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 36, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 36, + workers_produced: 41, + workers_lost: 5, + supply: 48, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5610, + gas: 1262, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6872, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7168, + resource_collection_rate: { + minerals: 1847, + gas: 358, + }, + unspent_resources: { + minerals: 235, + gas: 186, + }, + resource_collection_rate_all: 2205, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 42, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Liberator: 1, + }, + workers_active: 42, + workers_produced: 42, + workers_lost: 0, + supply: 77, + supply_cap: 78, + supply_block: 35, + spm: 11, + army_value: { + minerals: 1450, + gas: 550, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7410, + gas: 1136, + }, + total_army_value: 2000, + total_resources_lost: 0, + total_resources_collected: 8546, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7168, + resource_collection_rate: { + minerals: 1231, + gas: 627, + }, + unspent_resources: { + minerals: 1085, + gas: 862, + }, + resource_collection_rate_all: 1858, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 37, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 37, + workers_produced: 42, + workers_lost: 5, + supply: 48, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5610, + gas: 1262, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 6872, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7280, + resource_collection_rate: { + minerals: 1707, + gas: 313, + }, + unspent_resources: { + minerals: 175, + gas: 193, + }, + resource_collection_rate_all: 2020, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 40, + spm: 11, + army_value: { + minerals: 1450, + gas: 550, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7450, + gas: 1168, + }, + total_army_value: 2000, + total_resources_lost: 0, + total_resources_collected: 8618, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7280, + resource_collection_rate: { + minerals: 1371, + gas: 649, + }, + unspent_resources: { + minerals: 1215, + gas: 938, + }, + resource_collection_rate_all: 2020, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 38, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 38, + workers_produced: 43, + workers_lost: 5, + supply: 49, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5790, + gas: 1338, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 7128, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7394, + resource_collection_rate: { + minerals: 1819, + gas: 313, + }, + unspent_resources: { + minerals: 85, + gas: 233, + }, + resource_collection_rate_all: 2132, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + SCV: 2, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1450, + gas: 550, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7660, + gas: 1208, + }, + total_army_value: 2000, + total_resources_lost: 0, + total_resources_collected: 8868, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7394, + resource_collection_rate: { + minerals: 1371, + gas: 649, + }, + unspent_resources: { + minerals: 1315, + gas: 1018, + }, + resource_collection_rate_all: 2020, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 39, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 39, + workers_produced: 44, + workers_lost: 5, + supply: 50, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5940, + gas: 1418, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 7358, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7504, + resource_collection_rate: { + minerals: 1819, + gas: 313, + }, + unspent_resources: { + minerals: 85, + gas: 233, + }, + resource_collection_rate_all: 2132, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Marine: 1, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 45, + spm: 12, + army_value: { + minerals: 1450, + gas: 550, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7660, + gas: 1208, + }, + total_army_value: 2000, + total_resources_lost: 0, + total_resources_collected: 8868, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7504, + resource_collection_rate: { + minerals: 1371, + gas: 649, + }, + unspent_resources: { + minerals: 1315, + gas: 1018, + }, + resource_collection_rate_all: 2020, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 40, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 40, + workers_produced: 45, + workers_lost: 5, + supply: 50, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5940, + gas: 1418, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 7358, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7624, + resource_collection_rate: { + minerals: 1819, + gas: 425, + }, + unspent_resources: { + minerals: 230, + gas: 293, + }, + resource_collection_rate_all: 2244, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 81, + supply_cap: 86, + supply_block: 45, + spm: 10, + army_value: { + minerals: 1650, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7955, + gas: 1268, + }, + total_army_value: 2325, + total_resources_lost: 0, + total_resources_collected: 9223, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7624, + resource_collection_rate: { + minerals: 1483, + gas: 627, + }, + unspent_resources: { + minerals: 1505, + gas: 1094, + }, + resource_collection_rate_all: 2110, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 40, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 40, + workers_produced: 45, + workers_lost: 5, + supply: 50, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6130, + gas: 1494, + }, + total_army_value: 725, + total_resources_lost: 0, + total_resources_collected: 7624, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7728, + resource_collection_rate: { + minerals: 1483, + gas: 604, + }, + unspent_resources: { + minerals: 255, + gas: 273, + }, + resource_collection_rate_all: 2087, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + BarracksFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Marine: 15, + Medivac: 1, + SiegeTank: 2, + }, + workers_active: 46, + workers_produced: 46, + workers_lost: 0, + supply: 83, + supply_cap: 101, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1650, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8080, + gas: 1248, + }, + total_army_value: 2325, + total_resources_lost: 0, + total_resources_collected: 9328, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7728, + resource_collection_rate: { + minerals: 1595, + gas: 649, + }, + unspent_resources: { + minerals: 1700, + gas: 1174, + }, + resource_collection_rate_all: 2244, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 40, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 40, + workers_produced: 45, + workers_lost: 5, + supply: 50, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 200, + gas: 250, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6325, + gas: 1574, + }, + total_army_value: 450, + total_resources_lost: 275, + total_resources_collected: 7899, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7840, + resource_collection_rate: { + minerals: 1427, + gas: 627, + }, + unspent_resources: { + minerals: 430, + gas: 353, + }, + resource_collection_rate_all: 2054, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 46, + workers_produced: 46, + workers_lost: 0, + supply: 83, + supply_cap: 125, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1700, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8305, + gas: 1378, + }, + total_army_value: 2375, + total_resources_lost: 0, + total_resources_collected: 9683, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 7840, + resource_collection_rate: { + minerals: 1595, + gas: 649, + }, + unspent_resources: { + minerals: 1700, + gas: 1174, + }, + resource_collection_rate_all: 2244, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 40, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 40, + workers_produced: 45, + workers_lost: 5, + supply: 50, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 250, + }, + resources_lost: { + minerals: 325, + gas: 50, + }, + resources_collected: { + minerals: 6325, + gas: 1574, + }, + total_army_value: 350, + total_resources_lost: 375, + total_resources_collected: 7899, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7952, + resource_collection_rate: { + minerals: 1427, + gas: 627, + }, + unspent_resources: { + minerals: 430, + gas: 353, + }, + resource_collection_rate_all: 2054, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 47, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + EngineeringBay: 1, + }, + workers_active: 47, + workers_produced: 47, + workers_lost: 0, + supply: 83, + supply_cap: 125, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1700, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8305, + gas: 1378, + }, + total_army_value: 2375, + total_resources_lost: 0, + total_resources_collected: 9683, + race: {}, + workers_killed: 6, + }, + "2": { + gameloop: 7952, + resource_collection_rate: { + minerals: 1595, + gas: 649, + }, + unspent_resources: { + minerals: 1685, + gas: 1250, + }, + resource_collection_rate_all: 2244, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 39, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 39, + workers_produced: 45, + workers_lost: 6, + supply: 46, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 250, + }, + resources_lost: { + minerals: 325, + gas: 50, + }, + resources_collected: { + minerals: 6510, + gas: 1650, + }, + total_army_value: 350, + total_resources_lost: 375, + total_resources_collected: 8160, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8064, + resource_collection_rate: { + minerals: 1623, + gas: 694, + }, + unspent_resources: { + minerals: 255, + gas: 233, + }, + resource_collection_rate_all: 2317, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 47, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + BarracksFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 47, + workers_produced: 47, + workers_lost: 0, + supply: 84, + supply_cap: 125, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8330, + gas: 1258, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 9588, + race: {}, + workers_killed: 13, + }, + "2": { + gameloop: 8064, + resource_collection_rate: { + minerals: 1567, + gas: 649, + }, + unspent_resources: { + minerals: 1825, + gas: 1326, + }, + resource_collection_rate_all: 2216, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 32, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 32, + workers_produced: 45, + workers_lost: 13, + supply: 42, + supply_cap: 62, + supply_block: 0, + spm: 0, + army_value: { + minerals: 200, + gas: 250, + }, + resources_lost: { + minerals: 325, + gas: 50, + }, + resources_collected: { + minerals: 6700, + gas: 1726, + }, + total_army_value: 450, + total_resources_lost: 375, + total_resources_collected: 8426, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8178, + resource_collection_rate: { + minerals: 1679, + gas: 694, + }, + unspent_resources: { + minerals: 350, + gas: 313, + }, + resource_collection_rate_all: 2373, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Marine: 15, + Medivac: 1, + SiegeTankSieged: 2, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 84, + supply_cap: 125, + supply_block: 45, + spm: 12, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8525, + gas: 1338, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 9863, + race: {}, + workers_killed: 19, + }, + "2": { + gameloop: 8178, + resource_collection_rate: { + minerals: 1371, + gas: 537, + }, + unspent_resources: { + minerals: 1925, + gas: 1386, + }, + resource_collection_rate_all: 1908, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 26, + died: 19, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 26, + workers_produced: 45, + workers_lost: 19, + supply: 35, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 200, + gas: 250, + }, + resources_lost: { + minerals: 325, + gas: 50, + }, + resources_collected: { + minerals: 6850, + gas: 1786, + }, + total_army_value: 450, + total_resources_lost: 375, + total_resources_collected: 8636, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8294, + resource_collection_rate: { + minerals: 1679, + gas: 694, + }, + unspent_resources: { + minerals: 350, + gas: 313, + }, + resource_collection_rate_all: 2373, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 4, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 84, + supply_cap: 125, + supply_block: 45, + spm: 14, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8525, + gas: 1338, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 9863, + race: {}, + workers_killed: 24, + }, + "2": { + gameloop: 8294, + resource_collection_rate: { + minerals: 1371, + gas: 537, + }, + unspent_resources: { + minerals: 1925, + gas: 1386, + }, + resource_collection_rate_all: 1908, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 22, + died: 24, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 22, + workers_produced: 46, + workers_lost: 24, + supply: 35, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 200, + gas: 250, + }, + resources_lost: { + minerals: 325, + gas: 50, + }, + resources_collected: { + minerals: 6850, + gas: 1786, + }, + total_army_value: 450, + total_resources_lost: 375, + total_resources_collected: 8636, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8400, + resource_collection_rate: { + minerals: 1959, + gas: 649, + }, + unspent_resources: { + minerals: 5, + gas: 316, + }, + resource_collection_rate_all: 2608, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + BarracksTechLab: 2, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 90, + supply_cap: 125, + supply_block: 45, + spm: 11, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8480, + gas: 1391, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 9871, + race: {}, + workers_killed: 26, + }, + "2": { + gameloop: 8400, + resource_collection_rate: { + minerals: 1035, + gas: 403, + }, + unspent_resources: { + minerals: 1985, + gas: 1430, + }, + resource_collection_rate_all: 1438, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 21, + died: 26, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 21, + workers_produced: 47, + workers_lost: 26, + supply: 30, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 375, + gas: 150, + }, + resources_collected: { + minerals: 6960, + gas: 1830, + }, + total_army_value: 300, + total_resources_lost: 525, + total_resources_collected: 8790, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8516, + resource_collection_rate: { + minerals: 1875, + gas: 649, + }, + unspent_resources: { + minerals: 95, + gas: 279, + }, + resource_collection_rate_all: 2524, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + OrbitalCommandFlying: 1, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 90, + supply_cap: 125, + supply_block: 45, + spm: 10, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8870, + gas: 1354, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 10224, + race: {}, + workers_killed: 30, + }, + "2": { + gameloop: 8516, + resource_collection_rate: { + minerals: 923, + gas: 268, + }, + unspent_resources: { + minerals: 1700, + gas: 1358, + }, + resource_collection_rate_all: 1191, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 30, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 48, + workers_lost: 30, + supply: 28, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 375, + gas: 150, + }, + resources_collected: { + minerals: 7075, + gas: 1858, + }, + total_army_value: 300, + total_resources_lost: 525, + total_resources_collected: 8933, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8624, + resource_collection_rate: { + minerals: 1875, + gas: 649, + }, + unspent_resources: { + minerals: 95, + gas: 279, + }, + resource_collection_rate_all: 2524, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 90, + supply_cap: 125, + supply_block: 45, + spm: 10, + army_value: { + minerals: 1750, + gas: 675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8870, + gas: 1354, + }, + total_army_value: 2425, + total_resources_lost: 0, + total_resources_collected: 10224, + race: {}, + workers_killed: 34, + }, + "2": { + gameloop: 8624, + resource_collection_rate: { + minerals: 923, + gas: 268, + }, + unspent_resources: { + minerals: 1700, + gas: 1358, + }, + resource_collection_rate_all: 1191, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 34, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 48, + workers_lost: 34, + supply: 28, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 475, + gas: 150, + }, + resources_collected: { + minerals: 7075, + gas: 1858, + }, + total_army_value: 200, + total_resources_lost: 625, + total_resources_collected: 8933, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8736, + resource_collection_rate: { + minerals: 1819, + gas: 627, + }, + unspent_resources: { + minerals: 190, + gas: 355, + }, + resource_collection_rate_all: 2446, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 92, + supply_cap: 133, + supply_block: 45, + spm: 10, + army_value: { + minerals: 2050, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9065, + gas: 1430, + }, + total_army_value: 2775, + total_resources_lost: 0, + total_resources_collected: 10495, + race: {}, + workers_killed: 35, + }, + "2": { + gameloop: 8736, + resource_collection_rate: { + minerals: 839, + gas: 179, + }, + unspent_resources: { + minerals: 1740, + gas: 1378, + }, + resource_collection_rate_all: 1018, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 35, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 2, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 49, + workers_lost: 35, + supply: 22, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 475, + gas: 150, + }, + resources_collected: { + minerals: 7165, + gas: 1878, + }, + total_army_value: 200, + total_resources_lost: 625, + total_resources_collected: 9043, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8850, + resource_collection_rate: { + minerals: 1987, + gas: 627, + }, + unspent_resources: { + minerals: 55, + gas: 160, + }, + resource_collection_rate_all: 2614, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 50, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 50, + workers_produced: 50, + workers_lost: 0, + supply: 99, + supply_cap: 133, + supply_block: 45, + spm: 10, + army_value: { + minerals: 2050, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9280, + gas: 1460, + }, + total_army_value: 2775, + total_resources_lost: 0, + total_resources_collected: 10740, + race: {}, + workers_killed: 37, + }, + "2": { + gameloop: 8850, + resource_collection_rate: { + minerals: 587, + gas: 179, + }, + unspent_resources: { + minerals: 1685, + gas: 1398, + }, + resource_collection_rate_all: 766, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 37, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 50, + workers_lost: 37, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 475, + gas: 150, + }, + resources_collected: { + minerals: 7235, + gas: 1898, + }, + total_army_value: 200, + total_resources_lost: 625, + total_resources_collected: 9133, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8960, + resource_collection_rate: { + minerals: 2015, + gas: 649, + }, + unspent_resources: { + minerals: 160, + gas: 240, + }, + resource_collection_rate_all: 2664, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 50, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 2, + }, + workers_active: 50, + workers_produced: 50, + workers_lost: 0, + supply: 100, + supply_cap: 133, + supply_block: 45, + spm: 10, + army_value: { + minerals: 2050, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9435, + gas: 1540, + }, + total_army_value: 2775, + total_resources_lost: 0, + total_resources_collected: 10975, + race: {}, + workers_killed: 38, + }, + "2": { + gameloop: 8960, + resource_collection_rate: { + minerals: 587, + gas: 179, + }, + unspent_resources: { + minerals: 1685, + gas: 1398, + }, + resource_collection_rate_all: 766, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 38, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 51, + workers_lost: 38, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 475, + gas: 150, + }, + resources_collected: { + minerals: 7235, + gas: 1898, + }, + total_army_value: 200, + total_resources_lost: 625, + total_resources_collected: 9133, + race: { + warpgate_efficiency: [-1.047, 46.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9086, + resource_collection_rate: { + minerals: 2015, + gas: 649, + }, + unspent_resources: { + minerals: 160, + gas: 240, + }, + resource_collection_rate_all: 2664, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 51, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 51, + workers_produced: 51, + workers_lost: 0, + supply: 100, + supply_cap: 133, + supply_block: 45, + spm: 9, + army_value: { + minerals: 2050, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9435, + gas: 1540, + }, + total_army_value: 2775, + total_resources_lost: 0, + total_resources_collected: 10975, + race: {}, + workers_killed: 38, + }, + "2": { + gameloop: 9086, + resource_collection_rate: { + minerals: 531, + gas: 156, + }, + unspent_resources: { + minerals: 1700, + gas: 1414, + }, + resource_collection_rate_all: 687, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 38, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 51, + workers_lost: 38, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7300, + gas: 1914, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9214, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9184, + resource_collection_rate: { + minerals: 2211, + gas: 694, + }, + unspent_resources: { + minerals: 40, + gas: 245, + }, + resource_collection_rate_all: 2905, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 52, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 52, + workers_produced: 52, + workers_lost: 0, + supply: 111, + supply_cap: 133, + supply_block: 45, + spm: 8, + army_value: { + minerals: 2050, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9815, + gas: 1620, + }, + total_army_value: 2775, + total_resources_lost: 0, + total_resources_collected: 11435, + race: {}, + workers_killed: 40, + }, + "2": { + gameloop: 9184, + resource_collection_rate: { + minerals: 531, + gas: 179, + }, + unspent_resources: { + minerals: 1540, + gas: 1434, + }, + resource_collection_rate_all: 710, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 40, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 12, + workers_produced: 52, + workers_lost: 40, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7365, + gas: 1934, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9299, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9296, + resource_collection_rate: { + minerals: 2603, + gas: 649, + }, + unspent_resources: { + minerals: 70, + gas: 267, + }, + resource_collection_rate_all: 3252, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 53, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 53, + workers_produced: 53, + workers_lost: 0, + supply: 113, + supply_cap: 133, + supply_block: 45, + spm: 7, + army_value: { + minerals: 2150, + gas: 750, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10045, + gas: 1667, + }, + total_army_value: 2900, + total_resources_lost: 0, + total_resources_collected: 11712, + race: {}, + workers_killed: 40, + }, + "2": { + gameloop: 9296, + resource_collection_rate: { + minerals: 531, + gas: 156, + }, + unspent_resources: { + minerals: 1550, + gas: 1450, + }, + resource_collection_rate_all: 687, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 40, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 12, + workers_produced: 52, + workers_lost: 40, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7425, + gas: 1950, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9375, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9428, + resource_collection_rate: { + minerals: 2603, + gas: 649, + }, + unspent_resources: { + minerals: 70, + gas: 267, + }, + resource_collection_rate_all: 3252, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 55, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 55, + workers_produced: 55, + workers_lost: 0, + supply: 113, + supply_cap: 133, + supply_block: 45, + spm: 6, + army_value: { + minerals: 2350, + gas: 950, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10045, + gas: 1667, + }, + total_army_value: 3300, + total_resources_lost: 0, + total_resources_collected: 11712, + race: {}, + workers_killed: 40, + }, + "2": { + gameloop: 9428, + resource_collection_rate: { + minerals: 531, + gas: 156, + }, + unspent_resources: { + minerals: 1550, + gas: 1450, + }, + resource_collection_rate_all: 687, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 40, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 53, + workers_lost: 40, + supply: 20, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7425, + gas: 1950, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9375, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9521, + resource_collection_rate: { + minerals: 2575, + gas: 649, + }, + unspent_resources: { + minerals: 155, + gas: 243, + }, + resource_collection_rate_all: 3224, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 55, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 55, + workers_produced: 55, + workers_lost: 0, + supply: 117, + supply_cap: 133, + supply_block: 45, + spm: 6, + army_value: { + minerals: 2550, + gas: 975, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10330, + gas: 1743, + }, + total_army_value: 3525, + total_resources_lost: 0, + total_resources_collected: 12073, + race: {}, + workers_killed: 41, + }, + "2": { + gameloop: 9521, + resource_collection_rate: { + minerals: 531, + gas: 179, + }, + unspent_resources: { + minerals: 1565, + gas: 1470, + }, + resource_collection_rate_all: 710, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 41, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 54, + workers_lost: 41, + supply: 21, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7490, + gas: 1970, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9460, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9635, + resource_collection_rate: { + minerals: 2799, + gas: 627, + }, + unspent_resources: { + minerals: 60, + gas: 144, + }, + resource_collection_rate_all: 3426, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 57, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Starport: 1, + }, + workers_active: 57, + workers_produced: 57, + workers_lost: 0, + supply: 123, + supply_cap: 133, + supply_block: 45, + spm: 5, + army_value: { + minerals: 2700, + gas: 1025, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10760, + gas: 1844, + }, + total_army_value: 3725, + total_resources_lost: 0, + total_resources_collected: 12604, + race: {}, + workers_killed: 41, + }, + "2": { + gameloop: 9635, + resource_collection_rate: { + minerals: 559, + gas: 179, + }, + unspent_resources: { + minerals: 1585, + gas: 1490, + }, + resource_collection_rate_all: 738, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 41, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 54, + workers_lost: 41, + supply: 21, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7560, + gas: 1990, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9550, + race: { + warpgate_efficiency: [-0.975, 84.5], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9744, + resource_collection_rate: { + minerals: 2799, + gas: 627, + }, + unspent_resources: { + minerals: 60, + gas: 144, + }, + resource_collection_rate_all: 3426, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 57, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 57, + workers_produced: 57, + workers_lost: 0, + supply: 123, + supply_cap: 133, + supply_block: 45, + spm: 7, + army_value: { + minerals: 2800, + gas: 1050, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10760, + gas: 1844, + }, + total_army_value: 3850, + total_resources_lost: 0, + total_resources_collected: 12604, + race: {}, + workers_killed: 41, + }, + "2": { + gameloop: 9744, + resource_collection_rate: { + minerals: 559, + gas: 179, + }, + unspent_resources: { + minerals: 1585, + gas: 1490, + }, + resource_collection_rate_all: 738, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 41, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 55, + workers_lost: 41, + supply: 21, + supply_cap: 70, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7560, + gas: 1990, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9550, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9858, + resource_collection_rate: { + minerals: 2883, + gas: 627, + }, + unspent_resources: { + minerals: 135, + gas: 99, + }, + resource_collection_rate_all: 3510, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 129, + supply_cap: 141, + supply_block: 45, + spm: 8, + army_value: { + minerals: 2800, + gas: 1050, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11110, + gas: 1924, + }, + total_army_value: 3850, + total_resources_lost: 0, + total_resources_collected: 13034, + race: {}, + workers_killed: 42, + }, + "2": { + gameloop: 9858, + resource_collection_rate: { + minerals: 559, + gas: 156, + }, + unspent_resources: { + minerals: 1550, + gas: 1506, + }, + resource_collection_rate_all: 715, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 42, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 4, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 56, + workers_lost: 42, + supply: 23, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 575, + gas: 150, + }, + resources_collected: { + minerals: 7625, + gas: 2006, + }, + total_army_value: 575, + total_resources_lost: 725, + total_resources_collected: 9631, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9969, + resource_collection_rate: { + minerals: 2939, + gas: 627, + }, + unspent_resources: { + minerals: 85, + gas: 154, + }, + resource_collection_rate_all: 3566, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 131, + supply_cap: 141, + supply_block: 45, + spm: 7, + army_value: { + minerals: 2800, + gas: 1050, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11460, + gas: 2004, + }, + total_army_value: 3850, + total_resources_lost: 0, + total_resources_collected: 13464, + race: {}, + workers_killed: 43, + }, + "2": { + gameloop: 9969, + resource_collection_rate: { + minerals: 195, + gas: 44, + }, + unspent_resources: { + minerals: 1500, + gas: 1506, + }, + resource_collection_rate_all: 239, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 43, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 56, + workers_lost: 43, + supply: 18, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7625, + gas: 2006, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9631, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10080, + resource_collection_rate: { + minerals: 2603, + gas: 694, + }, + unspent_resources: { + minerals: 55, + gas: 184, + }, + resource_collection_rate_all: 3297, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 135, + supply_cap: 141, + supply_block: 45, + spm: 7, + army_value: { + minerals: 3075, + gas: 1200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11755, + gas: 2084, + }, + total_army_value: 4275, + total_resources_lost: 0, + total_resources_collected: 13839, + race: {}, + workers_killed: 48, + }, + "2": { + gameloop: 10080, + resource_collection_rate: { + minerals: 195, + gas: 44, + }, + unspent_resources: { + minerals: 1500, + gas: 1506, + }, + resource_collection_rate_all: 239, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 8, + died: 48, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 8, + workers_produced: 56, + workers_lost: 48, + supply: 18, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7625, + gas: 2006, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9631, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10192, + resource_collection_rate: { + minerals: 2603, + gas: 694, + }, + unspent_resources: { + minerals: 55, + gas: 184, + }, + resource_collection_rate_all: 3297, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + WidowMine: 4, + Marauder: 5, + Marine: 9, + Medivac: 3, + SiegeTankSieged: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 135, + supply_cap: 141, + supply_block: 45, + spm: 5, + army_value: { + minerals: 3250, + gas: 1225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11755, + gas: 2084, + }, + total_army_value: 4475, + total_resources_lost: 0, + total_resources_collected: 13839, + race: {}, + workers_killed: 52, + }, + "2": { + gameloop: 10192, + resource_collection_rate: { + minerals: 139, + gas: 44, + }, + unspent_resources: { + minerals: 1475, + gas: 1514, + }, + resource_collection_rate_all: 183, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 5, + died: 52, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 5, + workers_produced: 57, + workers_lost: 52, + supply: 13, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7600, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9614, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10305, + resource_collection_rate: { + minerals: 2435, + gas: 694, + }, + unspent_resources: { + minerals: 165, + gas: 239, + }, + resource_collection_rate_all: 3129, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Medivac: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 139, + supply_cap: 141, + supply_block: 45, + spm: 4, + army_value: { + minerals: 3250, + gas: 1225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12065, + gas: 2164, + }, + total_army_value: 4475, + total_resources_lost: 0, + total_resources_collected: 14229, + race: {}, + workers_killed: 53, + }, + "2": { + gameloop: 10305, + resource_collection_rate: { + minerals: 167, + gas: 22, + }, + unspent_resources: { + minerals: 1495, + gas: 1514, + }, + resource_collection_rate_all: 189, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 4, + died: 53, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 4, + workers_produced: 57, + workers_lost: 53, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7670, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9684, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10419, + resource_collection_rate: { + minerals: 2547, + gas: 649, + }, + unspent_resources: { + minerals: 225, + gas: 257, + }, + resource_collection_rate_all: 3196, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 141, + supply_cap: 165, + supply_block: 45, + spm: 6, + army_value: { + minerals: 3450, + gas: 1350, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12225, + gas: 2207, + }, + total_army_value: 4800, + total_resources_lost: 0, + total_resources_collected: 14432, + race: {}, + workers_killed: 56, + }, + "2": { + gameloop: 10419, + resource_collection_rate: { + minerals: 83, + gas: 0, + }, + unspent_resources: { + minerals: 1175, + gas: 1414, + }, + resource_collection_rate_all: 83, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 2, + died: 56, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 2, + workers_produced: 58, + workers_lost: 56, + supply: 11, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10530, + resource_collection_rate: { + minerals: 2547, + gas: 649, + }, + unspent_resources: { + minerals: 225, + gas: 257, + }, + resource_collection_rate_all: 3196, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 141, + supply_cap: 165, + supply_block: 45, + spm: 8, + army_value: { + minerals: 3650, + gas: 1400, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12225, + gas: 2207, + }, + total_army_value: 5050, + total_resources_lost: 0, + total_resources_collected: 14432, + race: {}, + workers_killed: 58, + }, + "2": { + gameloop: 10530, + resource_collection_rate: { + minerals: 83, + gas: 0, + }, + unspent_resources: { + minerals: 1175, + gas: 1414, + }, + resource_collection_rate_all: 83, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 58, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 58, + workers_lost: 58, + supply: 11, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10641, + resource_collection_rate: { + minerals: 2463, + gas: 649, + }, + unspent_resources: { + minerals: 65, + gas: 287, + }, + resource_collection_rate_all: 3112, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + EngineeringBay: 2, + Armory: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 151, + supply_cap: 165, + supply_block: 45, + spm: 8, + army_value: { + minerals: 3850, + gas: 1425, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12515, + gas: 2312, + }, + total_army_value: 5275, + total_resources_lost: 0, + total_resources_collected: 14827, + race: {}, + workers_killed: 58, + }, + "2": { + gameloop: 10641, + resource_collection_rate: { + minerals: 27, + gas: 0, + }, + unspent_resources: { + minerals: 1125, + gas: 1414, + }, + resource_collection_rate_all: 27, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 58, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 58, + workers_lost: 58, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10762, + resource_collection_rate: { + minerals: 2491, + gas: 627, + }, + unspent_resources: { + minerals: 30, + gas: 88, + }, + resource_collection_rate_all: 3118, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 60, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + EngineeringBay: 2, + Armory: 1, + }, + workers_active: 60, + workers_produced: 60, + workers_lost: 0, + supply: 151, + supply_cap: 165, + supply_block: 45, + spm: 8, + army_value: { + minerals: 3850, + gas: 1425, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12480, + gas: 2113, + }, + total_army_value: 5275, + total_resources_lost: 0, + total_resources_collected: 14593, + race: {}, + workers_killed: 59, + }, + "2": { + gameloop: 10762, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 1125, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 59, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 59, + workers_lost: 59, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10867, + resource_collection_rate: { + minerals: 2491, + gas: 627, + }, + unspent_resources: { + minerals: 30, + gas: 88, + }, + resource_collection_rate_all: 3118, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 62, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + Barracks: 5, + Factory: 1, + Starport: 1, + }, + workers_active: 62, + workers_produced: 62, + workers_lost: 0, + supply: 151, + supply_cap: 165, + supply_block: 45, + spm: 8, + army_value: { + minerals: 3950, + gas: 1450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12480, + gas: 2113, + }, + total_army_value: 5400, + total_resources_lost: 0, + total_resources_collected: 14593, + race: {}, + workers_killed: 59, + }, + "2": { + gameloop: 10867, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 1125, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 59, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 59, + workers_lost: 59, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 850, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1100, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.486, 93.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10983, + resource_collection_rate: { + minerals: 2967, + gas: 627, + }, + unspent_resources: { + minerals: 175, + gas: 68, + }, + resource_collection_rate_all: 3594, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 62, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + SCV: 1, + }, + workers_active: 62, + workers_produced: 62, + workers_lost: 0, + supply: 154, + supply_cap: 165, + supply_block: 45, + spm: 11, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12925, + gas: 2093, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 15018, + race: {}, + workers_killed: 60, + }, + "2": { + gameloop: 10983, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 1075, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 60, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 60, + workers_lost: 60, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 950, + gas: 250, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1200, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11092, + resource_collection_rate: { + minerals: 2995, + gas: 649, + }, + unspent_resources: { + minerals: 145, + gas: 148, + }, + resource_collection_rate_all: 3644, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 65, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1"], + current_selection: { + SCV: 1, + }, + workers_active: 65, + workers_produced: 65, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 9, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 13345, + gas: 2173, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 15518, + race: {}, + workers_killed: 60, + }, + "2": { + gameloop: 11092, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 975, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 60, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 60, + workers_lost: 60, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 150, + }, + resources_lost: { + minerals: 950, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 300, + total_resources_lost: 1200, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11200, + resource_collection_rate: { + minerals: 2995, + gas: 649, + }, + unspent_resources: { + minerals: 145, + gas: 148, + }, + resource_collection_rate_all: 3644, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 65, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 6, + }, + workers_active: 65, + workers_produced: 65, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 9, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 13345, + gas: 2173, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 15518, + race: {}, + workers_killed: 60, + }, + "2": { + gameloop: 11200, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 975, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 60, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 60, + workers_lost: 60, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 425, + gas: 250, + }, + resources_lost: { + minerals: 950, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 675, + total_resources_lost: 1200, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11312, + resource_collection_rate: { + minerals: 3023, + gas: 694, + }, + unspent_resources: { + minerals: 285, + gas: 228, + }, + resource_collection_rate_all: 3717, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 3, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 8, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 13735, + gas: 2253, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 15988, + race: {}, + workers_killed: 61, + }, + "2": { + gameloop: 11312, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 925, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 61, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 61, + workers_lost: 61, + supply: 9, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 1050, + gas: 250, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 575, + total_resources_lost: 1300, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11429, + resource_collection_rate: { + minerals: 3191, + gas: 671, + }, + unspent_resources: { + minerals: 385, + gas: 304, + }, + resource_collection_rate_all: 3862, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 7, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 9, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14135, + gas: 2329, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 16464, + race: {}, + workers_killed: 61, + }, + "2": { + gameloop: 11429, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 925, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 61, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 61, + workers_lost: 61, + supply: 7, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 325, + gas: 250, + }, + resources_lost: { + minerals: 1050, + gas: 250, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 575, + total_resources_lost: 1300, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11544, + resource_collection_rate: { + minerals: 3079, + gas: 739, + }, + unspent_resources: { + minerals: 460, + gas: 142, + }, + resource_collection_rate_all: 3818, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 6, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 9, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14510, + gas: 2417, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 16927, + race: {}, + workers_killed: 62, + }, + "2": { + gameloop: 11544, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 875, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 62, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 62, + workers_lost: 62, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1325, + gas: 350, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1675, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.578, 130.4], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11650, + resource_collection_rate: { + minerals: 3079, + gas: 739, + }, + unspent_resources: { + minerals: 460, + gas: 142, + }, + resource_collection_rate_all: 3818, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 1, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 155, + supply_cap: 165, + supply_block: 45, + spm: 9, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14510, + gas: 2417, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 16927, + race: {}, + workers_killed: 63, + }, + "2": { + gameloop: 11650, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 875, + gas: 1414, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 63, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 63, + workers_lost: 63, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11763, + resource_collection_rate: { + minerals: 2939, + gas: 761, + }, + unspent_resources: { + minerals: 560, + gas: 234, + }, + resource_collection_rate_all: 3700, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 1, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 158, + supply_cap: 165, + supply_block: 45, + spm: 7, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14860, + gas: 2509, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 17369, + race: {}, + workers_killed: 63, + }, + "2": { + gameloop: 11763, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 700, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 63, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 63, + workers_lost: 63, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11876, + resource_collection_rate: { + minerals: 3051, + gas: 873, + }, + unspent_resources: { + minerals: 310, + gas: 250, + }, + resource_collection_rate_all: 3924, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 66, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 1, + }, + workers_active: 66, + workers_produced: 66, + workers_lost: 0, + supply: 165, + supply_cap: 165, + supply_block: 50, + spm: 6, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14960, + gas: 2600, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 17560, + race: {}, + workers_killed: 64, + }, + "2": { + gameloop: 11876, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 650, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 64, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 64, + workers_lost: 64, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11985, + resource_collection_rate: { + minerals: 3051, + gas: 873, + }, + unspent_resources: { + minerals: 310, + gas: 250, + }, + resource_collection_rate_all: 3924, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 165, + supply_cap: 165, + supply_block: 50, + spm: 7, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14960, + gas: 2600, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 17560, + race: {}, + workers_killed: 64, + }, + "2": { + gameloop: 11985, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 650, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 64, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 64, + workers_lost: 64, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12096, + resource_collection_rate: { + minerals: 3023, + gas: 940, + }, + unspent_resources: { + minerals: 60, + gas: 66, + }, + resource_collection_rate_all: 3963, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 27, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 171, + supply_cap: 173, + supply_block: 50, + spm: 7, + army_value: { + minerals: 4250, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15310, + gas: 2591, + }, + total_army_value: 5775, + total_resources_lost: 0, + total_resources_collected: 17901, + race: {}, + workers_killed: 65, + }, + "2": { + gameloop: 12096, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 600, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 65, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 65, + workers_lost: 65, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12208, + resource_collection_rate: { + minerals: 2687, + gas: 985, + }, + unspent_resources: { + minerals: 180, + gas: 178, + }, + resource_collection_rate_all: 3672, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 171, + supply_cap: 173, + supply_block: 50, + spm: 10, + army_value: { + minerals: 4300, + gas: 1525, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15430, + gas: 2703, + }, + total_army_value: 5825, + total_resources_lost: 0, + total_resources_collected: 18133, + race: {}, + workers_killed: 65, + }, + "2": { + gameloop: 12208, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 600, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 65, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 65, + workers_lost: 65, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12320, + resource_collection_rate: { + minerals: 2687, + gas: 985, + }, + unspent_resources: { + minerals: 180, + gas: 178, + }, + resource_collection_rate_all: 3672, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Marauder: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + WidowMine: 4, + Marauder: 7, + Marine: 9, + Medivac: 3, + SiegeTank: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 171, + supply_cap: 173, + supply_block: 50, + spm: 7, + army_value: { + minerals: 4650, + gas: 1600, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15430, + gas: 2703, + }, + total_army_value: 6250, + total_resources_lost: 0, + total_resources_collected: 18133, + race: {}, + workers_killed: 65, + }, + "2": { + gameloop: 12320, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 600, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 65, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 65, + workers_lost: 65, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12432, + resource_collection_rate: { + minerals: 2155, + gas: 963, + }, + unspent_resources: { + minerals: 230, + gas: 240, + }, + resource_collection_rate_all: 3118, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + WidowMine: 6, + Marauder: 7, + Marine: 9, + Medivac: 3, + SiegeTank: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 172, + supply_cap: 173, + supply_block: 50, + spm: 8, + army_value: { + minerals: 4750, + gas: 1625, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15680, + gas: 2815, + }, + total_army_value: 6375, + total_resources_lost: 0, + total_resources_collected: 18495, + race: {}, + workers_killed: 66, + }, + "2": { + gameloop: 12432, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 550, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 66, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 66, + workers_lost: 66, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12545, + resource_collection_rate: { + minerals: 2043, + gas: 940, + }, + unspent_resources: { + minerals: 480, + gas: 344, + }, + resource_collection_rate_all: 2983, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + EngineeringBay: 2, + Armory: 1, + GhostAcademy: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 175, + supply_cap: 197, + supply_block: 50, + spm: 11, + army_value: { + minerals: 4750, + gas: 1625, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16080, + gas: 3069, + }, + total_army_value: 6375, + total_resources_lost: 0, + total_resources_collected: 19149, + race: {}, + workers_killed: 66, + }, + "2": { + gameloop: 12545, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 550, + gas: 1364, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 66, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 66, + workers_lost: 66, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1450, + gas: 400, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 1850, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.358, 139.2], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12656, + resource_collection_rate: { + minerals: 2127, + gas: 918, + }, + unspent_resources: { + minerals: 430, + gas: 156, + }, + resource_collection_rate_all: 3045, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 175, + supply_cap: 212, + supply_block: 50, + spm: 14, + army_value: { + minerals: 4800, + gas: 1625, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16330, + gas: 3031, + }, + total_army_value: 6425, + total_resources_lost: 0, + total_resources_collected: 19361, + race: {}, + workers_killed: 67, + }, + "2": { + gameloop: 12656, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 375, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 67, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 67, + workers_lost: 67, + supply: 5, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12775, + resource_collection_rate: { + minerals: 2127, + gas: 918, + }, + unspent_resources: { + minerals: 430, + gas: 156, + }, + resource_collection_rate_all: 3045, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 175, + supply_cap: 212, + supply_block: 50, + spm: 13, + army_value: { + minerals: 4800, + gas: 1625, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16330, + gas: 3031, + }, + total_army_value: 6425, + total_resources_lost: 0, + total_resources_collected: 19361, + race: {}, + workers_killed: 67, + }, + "2": { + gameloop: 12775, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 375, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 67, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 67, + workers_lost: 67, + supply: 5, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12886, + resource_collection_rate: { + minerals: 2127, + gas: 940, + }, + unspent_resources: { + minerals: 385, + gas: 18, + }, + resource_collection_rate_all: 3067, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 178, + supply_cap: 212, + supply_block: 50, + spm: 13, + army_value: { + minerals: 4800, + gas: 1625, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16685, + gas: 3143, + }, + total_army_value: 6425, + total_resources_lost: 0, + total_resources_collected: 19828, + race: {}, + workers_killed: 68, + }, + "2": { + gameloop: 12886, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 325, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 68, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 68, + workers_lost: 68, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12993, + resource_collection_rate: { + minerals: 2183, + gas: 940, + }, + unspent_resources: { + minerals: 660, + gas: 134, + }, + resource_collection_rate_all: 3123, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 178, + supply_cap: 212, + supply_block: 50, + spm: 14, + army_value: { + minerals: 4950, + gas: 1775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16960, + gas: 3259, + }, + total_army_value: 6725, + total_resources_lost: 0, + total_resources_collected: 20219, + race: {}, + workers_killed: 68, + }, + "2": { + gameloop: 12993, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 325, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 68, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 68, + workers_lost: 68, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13109, + resource_collection_rate: { + minerals: 2183, + gas: 940, + }, + unspent_resources: { + minerals: 660, + gas: 134, + }, + resource_collection_rate_all: 3123, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Marauder: 9, + Marine: 6, + WidowMine: 2, + Liberator: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 178, + supply_cap: 212, + supply_block: 50, + spm: 14, + army_value: { + minerals: 4950, + gas: 1775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16960, + gas: 3259, + }, + total_army_value: 6725, + total_resources_lost: 0, + total_resources_collected: 20219, + race: {}, + workers_killed: 69, + }, + "2": { + gameloop: 13109, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 325, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 69, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 69, + workers_lost: 69, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13217, + resource_collection_rate: { + minerals: 2071, + gas: 918, + }, + unspent_resources: { + minerals: 445, + gas: 96, + }, + resource_collection_rate_all: 2989, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "PunisherGrenades"], + current_selection: { + Marauder: 16, + Marine: 30, + WidowMine: 8, + Medivac: 4, + SiegeTank: 3, + Liberator: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 187, + supply_cap: 212, + supply_block: 50, + spm: 16, + army_value: { + minerals: 4950, + gas: 1775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17195, + gas: 3371, + }, + total_army_value: 6725, + total_resources_lost: 0, + total_resources_collected: 20566, + race: {}, + workers_killed: 69, + }, + "2": { + gameloop: 13217, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 275, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 69, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 69, + workers_lost: 69, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13348, + resource_collection_rate: { + minerals: 2239, + gas: 1209, + }, + unspent_resources: { + minerals: 575, + gas: 102, + }, + resource_collection_rate_all: 3448, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + ], + current_selection: { + EngineeringBay: 2, + Armory: 1, + GhostAcademy: 1, + FusionCore: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 187, + supply_cap: 212, + supply_block: 50, + spm: 17, + army_value: { + minerals: 4950, + gas: 1775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17325, + gas: 3377, + }, + total_army_value: 6725, + total_resources_lost: 0, + total_resources_collected: 20702, + race: {}, + workers_killed: 70, + }, + "2": { + gameloop: 13348, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 225, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 70, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 70, + workers_lost: 70, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13440, + resource_collection_rate: { + minerals: 2239, + gas: 1209, + }, + unspent_resources: { + minerals: 575, + gas: 102, + }, + resource_collection_rate_all: 3448, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Marauder: 16, + Marine: 30, + WidowMine: 8, + Medivac: 4, + SiegeTank: 3, + Liberator: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 187, + supply_cap: 212, + supply_block: 50, + spm: 19, + army_value: { + minerals: 5100, + gas: 1925, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17325, + gas: 3377, + }, + total_army_value: 7025, + total_resources_lost: 0, + total_resources_collected: 20702, + race: {}, + workers_killed: 70, + }, + "2": { + gameloop: 13440, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 225, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 70, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 70, + workers_lost: 70, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13552, + resource_collection_rate: { + minerals: 2463, + gas: 1299, + }, + unspent_resources: { + minerals: 715, + gas: 75, + }, + resource_collection_rate_all: 3762, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 36, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + ], + current_selection: { + OrbitalCommand: 3, + PlanetaryFortress: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 187, + supply_cap: 212, + supply_block: 50, + spm: 17, + army_value: { + minerals: 5400, + gas: 1925, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17465, + gas: 3350, + }, + total_army_value: 7325, + total_resources_lost: 0, + total_resources_collected: 20815, + race: {}, + workers_killed: 71, + }, + "2": { + gameloop: 13552, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 175, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 71, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 71, + workers_lost: 71, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13667, + resource_collection_rate: { + minerals: 3219, + gas: 1254, + }, + unspent_resources: { + minerals: 280, + gas: 215, + }, + resource_collection_rate_all: 4473, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 36, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 195, + supply_cap: 212, + supply_block: 50, + spm: 17, + army_value: { + minerals: 5400, + gas: 1925, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17830, + gas: 3490, + }, + total_army_value: 7325, + total_resources_lost: 0, + total_resources_collected: 21320, + race: {}, + workers_killed: 71, + }, + "2": { + gameloop: 13667, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 175, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 71, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 71, + workers_lost: 71, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13796, + resource_collection_rate: { + minerals: 3667, + gas: 1276, + }, + unspent_resources: { + minerals: 70, + gas: 196, + }, + resource_collection_rate_all: 4943, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 36, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 197, + supply_cap: 212, + supply_block: 50, + spm: 16, + army_value: { + minerals: 5550, + gas: 2075, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17720, + gas: 3471, + }, + total_army_value: 7625, + total_resources_lost: 0, + total_resources_collected: 21191, + race: {}, + workers_killed: 72, + }, + "2": { + gameloop: 13796, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 125, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 72, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 72, + workers_lost: 72, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13890, + resource_collection_rate: { + minerals: 3667, + gas: 1276, + }, + unspent_resources: { + minerals: 70, + gas: 196, + }, + resource_collection_rate_all: 4943, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 197, + supply_cap: 212, + supply_block: 50, + spm: 16, + army_value: { + minerals: 5600, + gas: 2075, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17720, + gas: 3471, + }, + total_army_value: 7675, + total_resources_lost: 0, + total_resources_collected: 21191, + race: {}, + workers_killed: 72, + }, + "2": { + gameloop: 13890, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 125, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 72, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 72, + workers_lost: 72, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14000, + resource_collection_rate: { + minerals: 3639, + gas: 1276, + }, + unspent_resources: { + minerals: 765, + gas: 198, + }, + resource_collection_rate_all: 4915, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Medivac: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 17, + army_value: { + minerals: 6100, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18565, + gas: 3623, + }, + total_army_value: 8325, + total_resources_lost: 0, + total_resources_collected: 22188, + race: {}, + workers_killed: 72, + }, + "2": { + gameloop: 14000, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 75, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 72, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 72, + workers_lost: 72, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14114, + resource_collection_rate: { + minerals: 3639, + gas: 1276, + }, + unspent_resources: { + minerals: 1175, + gas: 358, + }, + resource_collection_rate_all: 4915, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + WidowMineBurrowed: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 16, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18975, + gas: 3783, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 22758, + race: {}, + workers_killed: 73, + }, + "2": { + gameloop: 14114, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 75, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 73, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 73, + workers_lost: 73, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14228, + resource_collection_rate: { + minerals: 3639, + gas: 1276, + }, + unspent_resources: { + minerals: 1175, + gas: 358, + }, + resource_collection_rate_all: 4915, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + SCV: 4, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 18, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18975, + gas: 3783, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 22758, + race: {}, + workers_killed: 73, + }, + "2": { + gameloop: 14228, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 75, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 73, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 3, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 73, + workers_lost: 73, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14339, + resource_collection_rate: { + minerals: 3611, + gas: 1299, + }, + unspent_resources: { + minerals: 1195, + gas: 514, + }, + resource_collection_rate_all: 4910, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Marauder: 16, + Marine: 46, + WidowMineBurrowed: 4, + Medivac: 4, + WidowMine: 4, + SiegeTank: 3, + Liberator: 4, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 20, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18995, + gas: 3939, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 22934, + race: {}, + workers_killed: 74, + }, + "2": { + gameloop: 14339, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 74, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 74, + workers_lost: 74, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7625, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9639, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14448, + resource_collection_rate: { + minerals: 3443, + gas: 1366, + }, + unspent_resources: { + minerals: 1200, + gas: 674, + }, + resource_collection_rate_all: 4809, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + LiberatorAG: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + Liberator: 1, + LiberatorAG: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 20, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19400, + gas: 4099, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 23499, + race: {}, + workers_killed: 74, + }, + "2": { + gameloop: 14448, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 74, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 74, + workers_lost: 74, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14560, + resource_collection_rate: { + minerals: 3555, + gas: 1276, + }, + unspent_resources: { + minerals: 1625, + gas: 818, + }, + resource_collection_rate_all: 4831, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + Marauder: 16, + Marine: 46, + WidowMine: 8, + Medivac: 5, + SiegeTank: 3, + Liberator: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 18, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20225, + gas: 4243, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 24468, + race: {}, + workers_killed: 75, + }, + "2": { + gameloop: 14560, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 75, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 75, + workers_lost: 75, + supply: 3, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14672, + resource_collection_rate: { + minerals: 3555, + gas: 1276, + }, + unspent_resources: { + minerals: 1625, + gas: 818, + }, + resource_collection_rate_all: 4831, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + Barracks: 8, + Starport: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 15, + army_value: { + minerals: 6200, + gas: 2225, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20225, + gas: 4243, + }, + total_army_value: 8425, + total_resources_lost: 0, + total_resources_collected: 24468, + race: {}, + workers_killed: 75, + }, + "2": { + gameloop: 14672, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 75, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 4, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 75, + workers_lost: 75, + supply: 2, + supply_cap: 55, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14793, + resource_collection_rate: { + minerals: 3499, + gas: 1299, + }, + unspent_resources: { + minerals: 1785, + gas: 724, + }, + resource_collection_rate_all: 4798, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 5, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + SCV: 5, + MULE: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 15, + army_value: { + minerals: 6350, + gas: 2375, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20385, + gas: 4149, + }, + total_army_value: 8725, + total_resources_lost: 0, + total_resources_collected: 24534, + race: {}, + workers_killed: 75, + }, + "2": { + gameloop: 14793, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 75, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 75, + workers_lost: 75, + supply: 2, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14919, + resource_collection_rate: { + minerals: 3107, + gas: 1321, + }, + unspent_resources: { + minerals: 1495, + gas: 650, + }, + resource_collection_rate_all: 4428, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 0, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Starport: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "PunisherGrenades", + "TerranInfantryArmorsLevel1", + "TerranShipWeaponsLevel1", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 3, + PlanetaryFortress: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 200, + supply_cap: 212, + supply_block: 50, + spm: 16, + army_value: { + minerals: 6350, + gas: 2375, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20495, + gas: 4075, + }, + total_army_value: 8725, + total_resources_lost: 0, + total_resources_collected: 24570, + race: {}, + workers_killed: 75, + }, + "2": { + gameloop: 14919, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 25, + gas: 1314, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 75, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + Sentry: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 100, + }, + Immortal: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 275, + gas_cost: 100, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 75, + workers_lost: 75, + supply: 2, + supply_cap: 0, + supply_block: 5, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 1575, + gas: 450, + }, + resources_collected: { + minerals: 7675, + gas: 2014, + }, + total_army_value: 200, + total_resources_lost: 2025, + total_resources_collected: 9689, + race: { + warpgate_efficiency: [-0.311, 164.3], + }, + workers_killed: 0, + }, + }, + ], + player1: { + name: "BuRny", + race: "Terran", + supply_block: 1120, + army_value: { + minerals: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 225, 225, 225, 350, + 400, 400, 600, 600, 700, 700, 800, 950, 1000, 1050, 1050, 1200, 1300, 1300, 1300, 1450, 1450, 1500, + 1650, 1700, 1750, 1750, 1750, 1750, 1850, 2050, 2050, 2050, 2150, 2350, 2700, 2800, 2800, 3075, 3250, + 3450, 3750, 3850, 3950, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4650, 4750, 4800, 4800, 4950, + 4950, 4950, 5100, 5400, 5550, 5950, 6200, 6200, 6200, 6200, 6200, 6350, 6350, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 50, 50, 50, 150, + 150, 150, 150, 150, 275, 275, 275, 275, 400, 400, 400, 400, 550, 550, 550, 675, 675, 675, 675, 675, 675, + 675, 725, 725, 725, 750, 950, 1025, 1050, 1050, 1200, 1225, 1350, 1400, 1425, 1450, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1600, 1625, 1625, 1625, 1775, 1775, 1775, 1925, 1925, 2075, 2075, 2225, + 2225, 2225, 2225, 2225, 2375, 2375, + ], + }, + collection_rate: { + minerals: [ + 293, 671, 727, 727, 755, 783, 727, 755, 839, 783, 811, 811, 867, 867, 923, 923, 1007, 1063, 1007, 1035, + 979, 1035, 1063, 951, 979, 923, 1343, 1315, 1427, 1595, 1651, 1623, 1763, 1679, 1819, 1931, 1763, 1875, + 2071, 2211, 2267, 2043, 1847, 1707, 1819, 1819, 1483, 1427, 1623, 1679, 1959, 1875, 1819, 1987, 2015, + 2211, 2603, 2575, 2799, 2883, 2939, 2603, 2435, 2547, 2463, 2491, 2967, 2995, 3023, 3191, 3079, 2939, + 3051, 3023, 2687, 2155, 2043, 2127, 2127, 2183, 2071, 2239, 2463, 3219, 3667, 3639, 3639, 3611, 3443, + 3555, 3499, 3135, 3107, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 179, 156, 156, 156, 156, 156, 179, 179, 156, 156, 246, 313, 335, 358, + 313, 313, 313, 313, 313, 358, 358, 313, 313, 313, 313, 358, 335, 313, 313, 313, 313, 358, 358, 313, 313, + 425, 604, 627, 694, 694, 649, 649, 627, 627, 649, 694, 649, 649, 627, 627, 627, 694, 694, 649, 649, 627, + 627, 649, 694, 671, 739, 761, 873, 940, 985, 963, 940, 918, 940, 940, 918, 1209, 1299, 1254, 1276, 1276, + 1276, 1299, 1366, 1276, 1299, 1276, 1321, + ], + }, + unspent_resources: { + minerals: [ + 35, 70, 0, 80, 135, 65, 25, 20, 120, 210, 310, 405, 310, 5, 110, 70, 60, 70, 35, 90, 200, 90, 65, 130, + 40, 50, 70, 65, 30, 70, 50, 40, 205, 195, 420, 350, 155, 95, 200, 315, 480, 150, 235, 175, 85, 230, 255, + 430, 255, 350, 5, 95, 190, 55, 160, 40, 70, 155, 60, 135, 85, 55, 165, 225, 65, 30, 175, 145, 285, 385, + 460, 560, 310, 60, 180, 230, 480, 430, 385, 660, 445, 575, 715, 280, 70, 765, 1175, 1195, 1200, 1625, + 1785, 1460, 1495, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 32, 48, 68, 88, 108, 28, 48, 18, 34, 54, 90, 5, 45, 85, 92, 132, 72, 87, + 127, 167, 82, 114, 194, 234, 274, 189, 225, 111, 151, 191, 231, 146, 186, 193, 233, 293, 273, 353, 233, + 313, 316, 279, 355, 160, 240, 245, 267, 243, 144, 99, 154, 184, 239, 257, 287, 88, 68, 148, 228, 304, + 142, 234, 250, 66, 178, 240, 344, 156, 18, 134, 96, 102, 75, 215, 196, 198, 358, 514, 674, 818, 724, + 630, 650, + ], + }, + upgrades: [ + { + name: "Stimpack", + completed_at: 10184, + }, + { + name: "TerranInfantryWeaponsLevel1", + completed_at: 10512, + }, + { + name: "PunisherGrenades", + completed_at: 11126, + }, + { + name: "TerranInfantryArmorsLevel1", + completed_at: 13256, + }, + { + name: "TerranShipWeaponsLevel1", + completed_at: 13309, + }, + { + name: "TerranInfantryWeaponsLevel2", + completed_at: 13681, + }, + { + name: "LiberatorAGRangeUpgrade", + completed_at: 14384, + }, + ], + queues: [ + { + gameloop: 0, + supply_blocked: false, + queues: [], + }, + { + gameloop: 10, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 19, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 281, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 290, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 552, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 561, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 823, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 861, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1132, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1403, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1674, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1945, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2175, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2446, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2463, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2561, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2734, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2832, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2961, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3059, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3103, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3142, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3174, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3330, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3374, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 3379, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 3413, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3445, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3539, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3650, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3684, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3741, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3810, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3901, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3955, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4012, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4061, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4172, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4224, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4226, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4332, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4363, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4494, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4495, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4497, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4521, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4587, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4634, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4657, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4765, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4792, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4858, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4907, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4928, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5036, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5063, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5068, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5120, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5178, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5228, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5307, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5339, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5389, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5391, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5452, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5499, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5549, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5578, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 5660, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 5664, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5671, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5723, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5764, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5820, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5882, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5935, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5942, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5952, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6035, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6153, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6202, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6206, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6223, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6306, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6343, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6362, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6473, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6477, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6522, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6614, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6633, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6682, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6701, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6704, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6793, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6842, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6953, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6972, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6975, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7113, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7221, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7232, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7243, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7246, + supply_blocked: true, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7382, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7395, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7503, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7666, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7842, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7917, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7937, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8080, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8113, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8188, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8245, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8351, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8362, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8516, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8527, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8530, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8567, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8633, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8637, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8798, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8801, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8836, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8838, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8887, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8908, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8996, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9047, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9069, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9107, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9158, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9207, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9267, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 9308, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9318, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9340, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9367, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9378, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9478, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9527, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9538, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9579, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9611, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9638, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9798, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9809, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9850, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 9851, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10122, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10393, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10491, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10524, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10528, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10664, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10762, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10795, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10799, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10935, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11033, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11066, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11070, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11206, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11304, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11448, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11618, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11621, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11629, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11634, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11810, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11889, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11892, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 11905, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12067, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12338, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12609, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12858, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13039, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13220, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13470, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13741, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14012, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14269, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14450, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + ], + }, + player2: { + name: "A.I. 1 (Very Easy)", + race: "Protoss", + supply_block: 112, + army_value: { + minerals: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, 100, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 325, 325, 325, 350, 350, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 100, + 200, 200, 200, 150, 50, 50, 50, 325, 325, 325, 325, 325, 150, 150, 150, 150, 150, 150, 150, 150, 425, + 325, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 125, 125, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 250, 250, 250, 250, 150, + 150, 150, 150, 250, 250, 250, 250, 250, 150, 150, 150, 150, 150, 150, 150, 150, 250, 250, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + ], + }, + collection_rate: { + minerals: [ + 293, 671, 699, 727, 783, 755, 755, 727, 783, 699, 811, 755, 811, 811, 811, 699, 671, 727, 755, 531, 671, + 839, 867, 895, 811, 867, 895, 951, 895, 923, 951, 1035, 1175, 1287, 1203, 1035, 979, 1203, 1203, 1175, + 1147, 1259, 1231, 1371, 1371, 1483, 1595, 1595, 1567, 1371, 1035, 923, 839, 587, 531, 531, 531, 531, + 559, 559, 195, 139, 167, 83, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 156, 134, 156, 134, 134, 156, 201, 246, 291, 335, 313, + 313, 403, 425, 470, 470, 492, 515, 470, 403, 403, 470, 515, 627, 694, 649, 627, 649, 649, 627, 649, 649, + 649, 537, 403, 268, 179, 179, 156, 179, 156, 179, 179, 156, 44, 44, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + }, + unspent_resources: { + minerals: [ + 35, 70, 40, 135, 230, 170, 255, 355, 45, 130, 130, 145, 140, 40, 130, 155, 155, 195, 105, 95, 95, 150, + 200, 80, 130, 180, 95, 160, 110, 175, 240, 320, 480, 580, 630, 625, 710, 745, 830, 915, 1000, 1000, + 1085, 1215, 1315, 1505, 1700, 1685, 1825, 1925, 1985, 1700, 1740, 1685, 1700, 1540, 1550, 1565, 1585, + 1550, 1500, 1475, 1495, 1175, 1125, 1125, 1075, 975, 925, 925, 875, 700, 650, 600, 600, 550, 550, 375, + 325, 325, 275, 225, 175, 175, 125, 75, 75, 25, 25, 25, 25, 25, 25, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 36, 52, 22, 38, 4, 24, 52, 84, 116, 156, 92, 132, 180, + 232, 292, 352, 397, 453, 430, 478, 534, 494, 558, 634, 714, 786, 862, 938, 1018, 1094, 1174, 1250, 1326, + 1386, 1430, 1358, 1378, 1398, 1414, 1434, 1450, 1470, 1490, 1506, 1506, 1514, 1514, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1364, 1364, 1364, 1364, 1364, 1364, 1314, 1314, 1314, 1314, 1314, 1314, + 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, + ], + }, + upgrades: [ + { + name: "WarpGateResearch", + completed_at: 5314, + }, + ], + queues: [ + { + gameloop: 0, + supply_blocked: false, + queues: [], + }, + { + gameloop: 10, + supply_blocked: false, + queues: [], + }, + { + gameloop: 19, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 281, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 290, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 552, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 561, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 823, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 861, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1132, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1403, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1674, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1945, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 2175, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2446, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 2463, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2561, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2734, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2832, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2961, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3059, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3103, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3142, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3174, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3330, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3374, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3379, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3413, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3445, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3539, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3650, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3684, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3741, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3810, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3901, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3955, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4012, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4061, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4172, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4224, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4226, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4332, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4363, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4494, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4495, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4497, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4521, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4587, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4634, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4657, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4765, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4792, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4858, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4907, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 4928, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5036, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5063, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5068, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5120, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5178, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5228, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5307, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5339, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5389, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5391, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5452, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5499, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5549, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5578, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5660, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5664, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5671, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5723, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5764, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5820, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5882, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5935, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 5942, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5952, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6035, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6153, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6202, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6206, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6223, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6306, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6343, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6362, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6473, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6477, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6522, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6614, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6633, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6682, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6701, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6704, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6793, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6842, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6953, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6972, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 6975, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7113, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7221, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7232, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7243, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7246, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7382, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7395, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7503, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7666, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7842, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7917, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7937, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8080, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8113, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8188, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8245, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8351, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8362, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8516, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8527, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8530, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8567, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8633, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8637, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8798, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8801, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8836, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8838, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8887, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 8908, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8996, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9047, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9069, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9107, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9158, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9207, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9267, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9308, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9318, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9340, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9367, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9378, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9478, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9527, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9538, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9579, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9611, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9638, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9798, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9809, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9850, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9851, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10122, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10393, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10491, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10524, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10528, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10664, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10762, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10795, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10799, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 10935, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11033, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11066, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11070, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11206, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11304, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11448, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11618, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11621, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11629, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11634, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11810, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11889, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11892, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 11905, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 12067, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 12338, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 12609, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 12858, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 13039, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 13220, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 13470, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 13741, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 14012, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 14269, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 14450, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + ], + }, +} +export const replay2 = { + metadata: { + played_at: "2020-09-30T14:42:35+00:00", + map: "Submarine LE", + game_length: 714, + winner: 1, + }, + summary: { + mmr: { + "1": null, + "2": null, + }, + avg_resource_collection_rate: { + minerals: { + "1": 2029.6, + "2": 617.1, + }, + gas: { + "1": 585, + "2": 250.3, + }, + }, + max_collection_rate: { + "1": 5106, + "2": 1202, + }, + avg_unspent_resources: { + minerals: { + "1": 472.8, + "2": 2224.2, + }, + gas: { + "1": 299.8, + "2": 1261.6, + }, + }, + apm: { + "1": 334, + "2": 65, + }, + spm: { + "1": 9.6, + "2": 0, + }, + resources_lost: { + minerals: { + "1": 50, + "2": 800, + }, + gas: { + "1": 0, + "2": 275, + }, + }, + resources_collected: { + minerals: { + "1": 23549, + "2": 8365, + }, + gas: { + "1": 4963, + "2": 2946, + }, + }, + workers_produced: { + "1": 74, + "2": 49, + }, + workers_killed: { + "1": 49, + "2": 0, + }, + workers_lost: { + "1": 0, + "2": 49, + }, + supply_block: { + "1": 45, + "2": 5, + }, + sq: { + "1": 133, + "2": -3, + }, + avg_pac_per_min: { + "1": 33.41, + "2": 0, + }, + avg_pac_action_latency: { + "1": 0.22, + "2": 0, + }, + avg_pac_actions: { + "1": 9.18, + "2": 0, + }, + avg_pac_gap: { + "1": 0.07, + "2": 0, + }, + race: { + "1": {}, + "2": {}, + }, + }, + timeline: [ + { + "1": { + gameloop: 0, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: {}, + building: {}, + upgrade: [], + current_selection: {}, + workers_active: 0, + workers_produced: 0, + workers_lost: 0, + supply: 0, + supply_cap: 0, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 0, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 0, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 0, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: {}, + building: {}, + upgrade: [], + current_selection: {}, + workers_active: 0, + workers_produced: 0, + workers_lost: 0, + supply: 0, + supply_cap: 0, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 0, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 0, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 113, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 3, + }, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 12, + supply_cap: 15, + supply_block: 0, + spm: 1, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1050, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1050, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 113, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 0, + gas: 0, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 12, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1050, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1050, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 229, + resource_collection_rate: { + minerals: 335, + gas: 0, + }, + unspent_resources: { + minerals: 40, + gas: 0, + }, + resource_collection_rate_all: 335, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 13, + supply_cap: 15, + supply_block: 0, + spm: 1, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1090, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1090, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 229, + resource_collection_rate: { + minerals: 293, + gas: 0, + }, + unspent_resources: { + minerals: 35, + gas: 0, + }, + resource_collection_rate_all: 293, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 12, + workers_produced: 12, + workers_lost: 0, + supply: 13, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1085, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1085, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 337, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 1, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 337, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 450, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 3, + }, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 4, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 450, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 70, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1170, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1170, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 560, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 50, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 10, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1250, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1250, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 560, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 45, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 13, + workers_produced: 13, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1245, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1245, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 672, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 80, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 5, + spm: 19, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1330, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 672, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 135, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1335, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1335, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 786, + resource_collection_rate: { + minerals: 671, + gas: 0, + }, + unspent_resources: { + minerals: 80, + gas: 0, + }, + resource_collection_rate_all: 671, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 5, + spm: 24, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1330, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 786, + resource_collection_rate: { + minerals: 755, + gas: 0, + }, + unspent_resources: { + minerals: 135, + gas: 0, + }, + resource_collection_rate_all: 755, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1335, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1335, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 896, + resource_collection_rate: { + minerals: 699, + gas: 0, + }, + unspent_resources: { + minerals: 115, + gas: 0, + }, + resource_collection_rate_all: 699, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 15, + supply_cap: 15, + supply_block: 10, + spm: 27, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1365, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1365, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 896, + resource_collection_rate: { + minerals: 811, + gas: 0, + }, + unspent_resources: { + minerals: 160, + gas: 0, + }, + resource_collection_rate_all: 811, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1360, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1360, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1010, + resource_collection_rate: { + minerals: 699, + gas: 0, + }, + unspent_resources: { + minerals: 50, + gas: 0, + }, + resource_collection_rate_all: 699, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 30, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1500, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1500, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1010, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 95, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1370, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1370, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1120, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 20, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 35, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1545, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1545, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1120, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 95, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1370, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1370, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1248, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 20, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 16, + supply_cap: 23, + supply_block: 10, + spm: 37, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1545, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1545, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1248, + resource_collection_rate: { + minerals: 727, + gas: 0, + }, + unspent_resources: { + minerals: 75, + gas: 0, + }, + resource_collection_rate_all: 727, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1600, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1600, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1346, + resource_collection_rate: { + minerals: 699, + gas: 0, + }, + unspent_resources: { + minerals: 10, + gas: 0, + }, + resource_collection_rate_all: 699, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 17, + supply_cap: 23, + supply_block: 10, + spm: 39, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1585, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1585, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1346, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 185, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1710, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1710, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1459, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 105, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 38, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1730, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1730, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1459, + resource_collection_rate: { + minerals: 755, + gas: 22, + }, + unspent_resources: { + minerals: 260, + gas: 4, + }, + resource_collection_rate_all: 777, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1785, + gas: 4, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1789, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1570, + resource_collection_rate: { + minerals: 783, + gas: 0, + }, + unspent_resources: { + minerals: 105, + gas: 0, + }, + resource_collection_rate_all: 783, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 38, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1730, + gas: 0, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1730, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1570, + resource_collection_rate: { + minerals: 755, + gas: 22, + }, + unspent_resources: { + minerals: 260, + gas: 4, + }, + resource_collection_rate_all: 777, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1785, + gas: 4, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1789, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1681, + resource_collection_rate: { + minerals: 811, + gas: 22, + }, + unspent_resources: { + minerals: 205, + gas: 4, + }, + resource_collection_rate_all: 833, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 4, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 18, + supply_cap: 23, + supply_block: 10, + spm: 44, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1830, + gas: 4, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1834, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1681, + resource_collection_rate: { + minerals: 615, + gas: 134, + }, + unspent_resources: { + minerals: 340, + gas: 24, + }, + resource_collection_rate_all: 749, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1865, + gas: 24, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1889, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1793, + resource_collection_rate: { + minerals: 783, + gas: 111, + }, + unspent_resources: { + minerals: 305, + gas: 20, + }, + resource_collection_rate_all: 894, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 47, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1980, + gas: 20, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2000, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1793, + resource_collection_rate: { + minerals: 587, + gas: 134, + }, + unspent_resources: { + minerals: 340, + gas: 40, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1940, + gas: 40, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1980, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 1920, + resource_collection_rate: { + minerals: 755, + gas: 156, + }, + unspent_resources: { + minerals: 390, + gas: 40, + }, + resource_collection_rate_all: 911, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 46, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2065, + gas: 40, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2105, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 1920, + resource_collection_rate: { + minerals: 587, + gas: 134, + }, + unspent_resources: { + minerals: 340, + gas: 40, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 14, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 1940, + gas: 40, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 1980, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2018, + resource_collection_rate: { + minerals: 755, + gas: 156, + }, + unspent_resources: { + minerals: 390, + gas: 40, + }, + resource_collection_rate_all: 911, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 19, + supply_cap: 23, + supply_block: 10, + spm: 39, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2065, + gas: 40, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2105, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2018, + resource_collection_rate: { + minerals: 643, + gas: 134, + }, + unspent_resources: { + minerals: 375, + gas: 60, + }, + resource_collection_rate_all: 777, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 14, + workers_produced: 14, + workers_lost: 0, + supply: 15, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2025, + gas: 60, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2085, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2129, + resource_collection_rate: { + minerals: 755, + gas: 156, + }, + unspent_resources: { + minerals: 280, + gas: 10, + }, + resource_collection_rate_all: 911, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 40, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2155, + gas: 60, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2215, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2129, + resource_collection_rate: { + minerals: 643, + gas: 156, + }, + unspent_resources: { + minerals: 145, + gas: 80, + }, + resource_collection_rate_all: 799, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 17, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2045, + gas: 80, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2125, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2240, + resource_collection_rate: { + minerals: 755, + gas: 179, + }, + unspent_resources: { + minerals: 375, + gas: 30, + }, + resource_collection_rate_all: 934, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 38, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2250, + gas: 80, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2240, + resource_collection_rate: { + minerals: 643, + gas: 156, + }, + unspent_resources: { + minerals: 145, + gas: 80, + }, + resource_collection_rate_all: 799, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 15, + workers_produced: 15, + workers_lost: 0, + supply: 17, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2045, + gas: 80, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2125, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2352, + resource_collection_rate: { + minerals: 755, + gas: 179, + }, + unspent_resources: { + minerals: 375, + gas: 30, + }, + resource_collection_rate_all: 934, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + CommandCenter: 2, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 35, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2250, + gas: 80, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2330, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2352, + resource_collection_rate: { + minerals: 643, + gas: 156, + }, + unspent_resources: { + minerals: 170, + gas: 100, + }, + resource_collection_rate_all: 799, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 18, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2120, + gas: 100, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2220, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2465, + resource_collection_rate: { + minerals: 839, + gas: 156, + }, + unspent_resources: { + minerals: 75, + gas: 46, + }, + resource_collection_rate_all: 995, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 20, + supply_cap: 23, + supply_block: 10, + spm: 30, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2350, + gas: 96, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2446, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2465, + resource_collection_rate: { + minerals: 559, + gas: 291, + }, + unspent_resources: { + minerals: 185, + gas: 140, + }, + resource_collection_rate_all: 850, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 16, + workers_produced: 16, + workers_lost: 0, + supply: 19, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2185, + gas: 140, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2325, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2576, + resource_collection_rate: { + minerals: 783, + gas: 156, + }, + unspent_resources: { + minerals: 15, + gas: 66, + }, + resource_collection_rate_all: 939, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 21, + supply_cap: 23, + supply_block: 10, + spm: 28, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2440, + gas: 116, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2556, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2576, + resource_collection_rate: { + minerals: 587, + gas: 313, + }, + unspent_resources: { + minerals: 250, + gas: 176, + }, + resource_collection_rate_all: 900, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 20, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2300, + gas: 176, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2476, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2693, + resource_collection_rate: { + minerals: 783, + gas: 156, + }, + unspent_resources: { + minerals: 15, + gas: 66, + }, + resource_collection_rate_all: 939, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 21, + supply_cap: 23, + supply_block: 10, + spm: 29, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2440, + gas: 116, + }, + total_army_value: 0, + total_resources_lost: 0, + total_resources_collected: 2556, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2693, + resource_collection_rate: { + minerals: 587, + gas: 313, + }, + unspent_resources: { + minerals: 250, + gas: 176, + }, + resource_collection_rate_all: 900, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 17, + workers_produced: 17, + workers_lost: 0, + supply: 20, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2300, + gas: 176, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2476, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2802, + resource_collection_rate: { + minerals: 755, + gas: 156, + }, + unspent_resources: { + minerals: 55, + gas: 86, + }, + resource_collection_rate_all: 911, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 21, + supply_cap: 23, + supply_block: 10, + spm: 31, + army_value: { + minerals: 50, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2480, + gas: 136, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2616, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2802, + resource_collection_rate: { + minerals: 531, + gas: 313, + }, + unspent_resources: { + minerals: 265, + gas: 216, + }, + resource_collection_rate_all: 844, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 20, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2315, + gas: 216, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2531, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 2917, + resource_collection_rate: { + minerals: 867, + gas: 156, + }, + unspent_resources: { + minerals: 10, + gas: 6, + }, + resource_collection_rate_all: 1023, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 22, + supply_cap: 23, + supply_block: 10, + spm: 31, + army_value: { + minerals: 50, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2635, + gas: 156, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2791, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 2917, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 305, + gas: 206, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 18, + workers_produced: 18, + workers_lost: 0, + supply: 21, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2405, + gas: 206, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2611, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3040, + resource_collection_rate: { + minerals: 839, + gas: 156, + }, + unspent_resources: { + minerals: 70, + gas: 26, + }, + resource_collection_rate_all: 995, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 23, + supply_cap: 31, + supply_block: 10, + spm: 23, + army_value: { + minerals: 50, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2745, + gas: 176, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2921, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3040, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 305, + gas: 206, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 21, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2405, + gas: 206, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2611, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3136, + resource_collection_rate: { + minerals: 839, + gas: 156, + }, + unspent_resources: { + minerals: 70, + gas: 26, + }, + resource_collection_rate_all: 995, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 23, + supply_cap: 31, + supply_block: 10, + spm: 19, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2745, + gas: 176, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 2921, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3136, + resource_collection_rate: { + minerals: 671, + gas: 358, + }, + unspent_resources: { + minerals: 330, + gas: 246, + }, + resource_collection_rate_all: 1029, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 19, + workers_lost: 0, + supply: 22, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2480, + gas: 246, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2726, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3249, + resource_collection_rate: { + minerals: 839, + gas: 179, + }, + unspent_resources: { + minerals: 50, + gas: 46, + }, + resource_collection_rate_all: 1018, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 24, + supply_cap: 31, + supply_block: 10, + spm: 12, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2850, + gas: 196, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3046, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3249, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 410, + gas: 286, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 22, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2560, + gas: 286, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2846, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3360, + resource_collection_rate: { + minerals: 783, + gas: 179, + }, + unspent_resources: { + minerals: 110, + gas: 16, + }, + resource_collection_rate_all: 962, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Reaper: 1, + }, + workers_active: 21, + workers_produced: 21, + workers_lost: 0, + supply: 24, + supply_cap: 31, + supply_block: 10, + spm: 13, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2960, + gas: 216, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3176, + race: {}, + workers_killed: 0, + }, + "2": { + gameloop: 3360, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 410, + gas: 286, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 20, + workers_lost: 0, + supply: 22, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2560, + gas: 286, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2846, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3473, + resource_collection_rate: { + minerals: 783, + gas: 179, + }, + unspent_resources: { + minerals: 110, + gas: 16, + }, + resource_collection_rate_all: 962, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Reaper: 1, + }, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 24, + supply_cap: 31, + supply_block: 10, + spm: 9, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2960, + gas: 216, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3176, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 3473, + resource_collection_rate: { + minerals: 727, + gas: 291, + }, + unspent_resources: { + minerals: 495, + gas: 314, + }, + resource_collection_rate_all: 1018, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 20, + workers_lost: 1, + supply: 22, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2645, + gas: 314, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 2959, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3588, + resource_collection_rate: { + minerals: 867, + gas: 156, + }, + unspent_resources: { + minerals: 75, + gas: 32, + }, + resource_collection_rate_all: 1023, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Reaper: 1, + }, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 25, + supply_cap: 31, + supply_block: 10, + spm: 8, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3075, + gas: 232, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3307, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 3588, + resource_collection_rate: { + minerals: 559, + gas: 313, + }, + unspent_resources: { + minerals: 505, + gas: 354, + }, + resource_collection_rate_all: 872, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 20, + workers_lost: 1, + supply: 22, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2705, + gas: 354, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3059, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3698, + resource_collection_rate: { + minerals: 1007, + gas: 179, + }, + unspent_resources: { + minerals: 175, + gas: 56, + }, + resource_collection_rate_all: 1186, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 22, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + }, + workers_active: 22, + workers_produced: 22, + workers_lost: 0, + supply: 25, + supply_cap: 31, + supply_block: 10, + spm: 9, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3175, + gas: 256, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3431, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 3698, + resource_collection_rate: { + minerals: 531, + gas: 246, + }, + unspent_resources: { + minerals: 440, + gas: 332, + }, + resource_collection_rate_all: 777, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 19, + workers_produced: 20, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2765, + gas: 382, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3147, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3808, + resource_collection_rate: { + minerals: 1007, + gas: 179, + }, + unspent_resources: { + minerals: 175, + gas: 56, + }, + resource_collection_rate_all: 1186, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 25, + supply_cap: 31, + supply_block: 10, + spm: 9, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3175, + gas: 256, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3431, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 3808, + resource_collection_rate: { + minerals: 531, + gas: 246, + }, + unspent_resources: { + minerals: 440, + gas: 332, + }, + resource_collection_rate_all: 777, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2765, + gas: 382, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3147, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 3921, + resource_collection_rate: { + minerals: 1063, + gas: 223, + }, + unspent_resources: { + minerals: 170, + gas: 59, + }, + resource_collection_rate_all: 1286, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 23, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 23, + workers_produced: 23, + workers_lost: 0, + supply: 28, + supply_cap: 31, + supply_block: 10, + spm: 9, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3295, + gas: 284, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3579, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 3921, + resource_collection_rate: { + minerals: 643, + gas: 291, + }, + unspent_resources: { + minerals: 530, + gas: 368, + }, + resource_collection_rate_all: 934, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2855, + gas: 418, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3273, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4032, + resource_collection_rate: { + minerals: 1091, + gas: 291, + }, + unspent_resources: { + minerals: 100, + gas: 99, + }, + resource_collection_rate_all: 1382, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + }, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 28, + supply_cap: 46, + supply_block: 10, + spm: 7, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3375, + gas: 324, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3699, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4032, + resource_collection_rate: { + minerals: 811, + gas: 335, + }, + unspent_resources: { + minerals: 640, + gas: 408, + }, + resource_collection_rate_all: 1146, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2965, + gas: 458, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3423, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4145, + resource_collection_rate: { + minerals: 1091, + gas: 291, + }, + unspent_resources: { + minerals: 100, + gas: 99, + }, + resource_collection_rate_all: 1382, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Factory: 1, + }, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 28, + supply_cap: 46, + supply_block: 10, + spm: 4, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3375, + gas: 324, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3699, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4145, + resource_collection_rate: { + minerals: 811, + gas: 335, + }, + unspent_resources: { + minerals: 640, + gas: 408, + }, + resource_collection_rate_all: 1146, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 2965, + gas: 458, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3423, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4256, + resource_collection_rate: { + minerals: 979, + gas: 313, + }, + unspent_resources: { + minerals: 100, + gas: 139, + }, + resource_collection_rate_all: 1292, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 24, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 1, + CommandCenter: 1, + }, + workers_active: 24, + workers_produced: 24, + workers_lost: 0, + supply: 31, + supply_cap: 46, + supply_block: 10, + spm: 4, + army_value: { + minerals: 100, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3525, + gas: 364, + }, + total_army_value: 150, + total_resources_lost: 0, + total_resources_collected: 3889, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4256, + resource_collection_rate: { + minerals: 839, + gas: 335, + }, + unspent_resources: { + minerals: 720, + gas: 444, + }, + resource_collection_rate_all: 1174, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 0, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3045, + gas: 494, + }, + total_army_value: 100, + total_resources_lost: 0, + total_resources_collected: 3539, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4386, + resource_collection_rate: { + minerals: 1231, + gas: 358, + }, + unspent_resources: { + minerals: 5, + gas: 54, + }, + resource_collection_rate_all: 1589, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 34, + supply_cap: 46, + supply_block: 10, + spm: 4, + army_value: { + minerals: 175, + gas: 75, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3705, + gas: 404, + }, + total_army_value: 250, + total_resources_lost: 0, + total_resources_collected: 4109, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4386, + resource_collection_rate: { + minerals: 811, + gas: 335, + }, + unspent_resources: { + minerals: 830, + gas: 484, + }, + resource_collection_rate_all: 1146, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3155, + gas: 534, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3689, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4480, + resource_collection_rate: { + minerals: 1259, + gas: 313, + }, + unspent_resources: { + minerals: 35, + gas: 86, + }, + resource_collection_rate_all: 1572, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 25, + workers_produced: 25, + workers_lost: 0, + supply: 36, + supply_cap: 46, + supply_block: 10, + spm: 6, + army_value: { + minerals: 275, + gas: 75, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3835, + gas: 436, + }, + total_army_value: 350, + total_resources_lost: 0, + total_resources_collected: 4271, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4480, + resource_collection_rate: { + minerals: 811, + gas: 335, + }, + unspent_resources: { + minerals: 830, + gas: 484, + }, + resource_collection_rate_all: 1146, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3155, + gas: 534, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3689, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4592, + resource_collection_rate: { + minerals: 1259, + gas: 313, + }, + unspent_resources: { + minerals: 35, + gas: 86, + }, + resource_collection_rate_all: 1572, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 26, + workers_produced: 26, + workers_lost: 0, + supply: 36, + supply_cap: 46, + supply_block: 10, + spm: 6, + army_value: { + minerals: 275, + gas: 75, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3835, + gas: 436, + }, + total_army_value: 350, + total_resources_lost: 0, + total_resources_collected: 4271, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4592, + resource_collection_rate: { + minerals: 839, + gas: 313, + }, + unspent_resources: { + minerals: 920, + gas: 520, + }, + resource_collection_rate_all: 1152, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3245, + gas: 570, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3815, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4704, + resource_collection_rate: { + minerals: 1315, + gas: 313, + }, + unspent_resources: { + minerals: 150, + gas: 126, + }, + resource_collection_rate_all: 1628, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 26, + workers_produced: 26, + workers_lost: 0, + supply: 38, + supply_cap: 46, + supply_block: 10, + spm: 5, + army_value: { + minerals: 275, + gas: 75, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4050, + gas: 476, + }, + total_army_value: 350, + total_resources_lost: 0, + total_resources_collected: 4526, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4704, + resource_collection_rate: { + minerals: 811, + gas: 313, + }, + unspent_resources: { + minerals: 1020, + gas: 560, + }, + resource_collection_rate_all: 1124, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3345, + gas: 610, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 3955, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4816, + resource_collection_rate: { + minerals: 1455, + gas: 313, + }, + unspent_resources: { + minerals: 120, + gas: 141, + }, + resource_collection_rate_all: 1768, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 28, + workers_produced: 28, + workers_lost: 0, + supply: 39, + supply_cap: 46, + supply_block: 10, + spm: 3, + army_value: { + minerals: 350, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4220, + gas: 516, + }, + total_army_value: 450, + total_resources_lost: 0, + total_resources_collected: 4736, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4816, + resource_collection_rate: { + minerals: 867, + gas: 313, + }, + unspent_resources: { + minerals: 1120, + gas: 600, + }, + resource_collection_rate_all: 1180, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3445, + gas: 650, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4095, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 4928, + resource_collection_rate: { + minerals: 1455, + gas: 313, + }, + unspent_resources: { + minerals: 120, + gas: 141, + }, + resource_collection_rate_all: 1768, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 28, + workers_produced: 28, + workers_lost: 0, + supply: 39, + supply_cap: 46, + supply_block: 10, + spm: 3, + army_value: { + minerals: 450, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4220, + gas: 516, + }, + total_army_value: 550, + total_resources_lost: 0, + total_resources_collected: 4736, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 4928, + resource_collection_rate: { + minerals: 867, + gas: 313, + }, + unspent_resources: { + minerals: 1120, + gas: 600, + }, + resource_collection_rate_all: 1180, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3445, + gas: 650, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4095, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5041, + resource_collection_rate: { + minerals: 1707, + gas: 313, + }, + unspent_resources: { + minerals: 55, + gas: 181, + }, + resource_collection_rate_all: 2020, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 29, + workers_produced: 29, + workers_lost: 0, + supply: 42, + supply_cap: 46, + supply_block: 10, + spm: 2, + army_value: { + minerals: 450, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4305, + gas: 556, + }, + total_army_value: 550, + total_resources_lost: 0, + total_resources_collected: 4861, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5041, + resource_collection_rate: { + minerals: 867, + gas: 335, + }, + unspent_resources: { + minerals: 1215, + gas: 640, + }, + resource_collection_rate_all: 1202, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Gateway: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3540, + gas: 690, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4230, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5153, + resource_collection_rate: { + minerals: 1735, + gas: 335, + }, + unspent_resources: { + minerals: 40, + gas: 121, + }, + resource_collection_rate_all: 2070, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 30, + workers_produced: 30, + workers_lost: 0, + supply: 46, + supply_cap: 46, + supply_block: 15, + spm: 2, + army_value: { + minerals: 450, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4490, + gas: 596, + }, + total_army_value: 550, + total_resources_lost: 0, + total_resources_collected: 5086, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5153, + resource_collection_rate: { + minerals: 811, + gas: 313, + }, + unspent_resources: { + minerals: 1310, + gas: 676, + }, + resource_collection_rate_all: 1124, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3635, + gas: 726, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4361, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5264, + resource_collection_rate: { + minerals: 1735, + gas: 335, + }, + unspent_resources: { + minerals: 40, + gas: 121, + }, + resource_collection_rate_all: 2070, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 30, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 30, + workers_produced: 30, + workers_lost: 0, + supply: 46, + supply_cap: 46, + supply_block: 15, + spm: 2, + army_value: { + minerals: 550, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4490, + gas: 596, + }, + total_army_value: 650, + total_resources_lost: 0, + total_resources_collected: 5086, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5264, + resource_collection_rate: { + minerals: 811, + gas: 313, + }, + unspent_resources: { + minerals: 1310, + gas: 676, + }, + resource_collection_rate_all: 1124, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3635, + gas: 726, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4361, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5377, + resource_collection_rate: { + minerals: 1847, + gas: 335, + }, + unspent_resources: { + minerals: 45, + gas: 32, + }, + resource_collection_rate_all: 2182, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 31, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 31, + workers_produced: 31, + workers_lost: 0, + supply: 49, + supply_cap: 54, + supply_block: 15, + spm: 3, + army_value: { + minerals: 550, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4745, + gas: 632, + }, + total_army_value: 650, + total_resources_lost: 0, + total_resources_collected: 5377, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5377, + resource_collection_rate: { + minerals: 811, + gas: 335, + }, + unspent_resources: { + minerals: 1400, + gas: 716, + }, + resource_collection_rate_all: 1146, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3725, + gas: 766, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4491, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5488, + resource_collection_rate: { + minerals: 1875, + gas: 335, + }, + unspent_resources: { + minerals: 150, + gas: 72, + }, + resource_collection_rate_all: 2210, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 32, + workers_produced: 32, + workers_lost: 0, + supply: 52, + supply_cap: 54, + supply_block: 15, + spm: 3, + army_value: { + minerals: 550, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5000, + gas: 672, + }, + total_army_value: 650, + total_resources_lost: 0, + total_resources_collected: 5672, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5488, + resource_collection_rate: { + minerals: 783, + gas: 313, + }, + unspent_resources: { + minerals: 1490, + gas: 752, + }, + resource_collection_rate_all: 1096, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3815, + gas: 802, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4617, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5600, + resource_collection_rate: { + minerals: 1847, + gas: 313, + }, + unspent_resources: { + minerals: 145, + gas: 108, + }, + resource_collection_rate_all: 2160, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 33, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 33, + workers_produced: 33, + workers_lost: 0, + supply: 54, + supply_cap: 54, + supply_block: 20, + spm: 3, + army_value: { + minerals: 550, + gas: 100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5095, + gas: 708, + }, + total_army_value: 650, + total_resources_lost: 0, + total_resources_collected: 5803, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5600, + resource_collection_rate: { + minerals: 783, + gas: 313, + }, + unspent_resources: { + minerals: 1490, + gas: 752, + }, + resource_collection_rate_all: 1096, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3815, + gas: 802, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4617, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5714, + resource_collection_rate: { + minerals: 1847, + gas: 313, + }, + unspent_resources: { + minerals: 145, + gas: 108, + }, + resource_collection_rate_all: 2160, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 33, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 33, + workers_produced: 33, + workers_lost: 0, + supply: 54, + supply_cap: 54, + supply_block: 20, + spm: 3, + army_value: { + minerals: 650, + gas: 200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5095, + gas: 708, + }, + total_army_value: 850, + total_resources_lost: 0, + total_resources_collected: 5803, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5714, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 1575, + gas: 792, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3900, + gas: 842, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4742, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5825, + resource_collection_rate: { + minerals: 1847, + gas: 313, + }, + unspent_resources: { + minerals: 165, + gas: 148, + }, + resource_collection_rate_all: 2160, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 34, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Medivac: 1, + }, + workers_active: 34, + workers_produced: 34, + workers_lost: 0, + supply: 56, + supply_cap: 62, + supply_block: 20, + spm: 2, + army_value: { + minerals: 750, + gas: 200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5315, + gas: 748, + }, + total_army_value: 950, + total_resources_lost: 0, + total_resources_collected: 6063, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5825, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 1670, + gas: 832, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 3995, + gas: 882, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 4877, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 5936, + resource_collection_rate: { + minerals: 1847, + gas: 335, + }, + unspent_resources: { + minerals: 275, + gas: 188, + }, + resource_collection_rate_all: 2182, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 35, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + }, + workers_active: 35, + workers_produced: 35, + workers_lost: 0, + supply: 58, + supply_cap: 62, + supply_block: 20, + spm: 3, + army_value: { + minerals: 750, + gas: 200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5625, + gas: 788, + }, + total_army_value: 950, + total_resources_lost: 0, + total_resources_collected: 6413, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 5936, + resource_collection_rate: { + minerals: 783, + gas: 335, + }, + unspent_resources: { + minerals: 1765, + gas: 872, + }, + resource_collection_rate_all: 1118, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4090, + gas: 922, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5012, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6048, + resource_collection_rate: { + minerals: 1847, + gas: 335, + }, + unspent_resources: { + minerals: 275, + gas: 188, + }, + resource_collection_rate_all: 2182, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 35, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Bunker: 1, + }, + workers_active: 35, + workers_produced: 35, + workers_lost: 0, + supply: 58, + supply_cap: 62, + supply_block: 20, + spm: 3, + army_value: { + minerals: 900, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5625, + gas: 788, + }, + total_army_value: 1225, + total_resources_lost: 0, + total_resources_collected: 6413, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6048, + resource_collection_rate: { + minerals: 783, + gas: 335, + }, + unspent_resources: { + minerals: 1765, + gas: 872, + }, + resource_collection_rate_all: 1118, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4090, + gas: 922, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5012, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6168, + resource_collection_rate: { + minerals: 1931, + gas: 313, + }, + unspent_resources: { + minerals: 275, + gas: 99, + }, + resource_collection_rate_all: 2244, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 37, + workers_produced: 37, + workers_lost: 0, + supply: 61, + supply_cap: 62, + supply_block: 20, + spm: 3, + army_value: { + minerals: 1000, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5775, + gas: 824, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 6599, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6168, + resource_collection_rate: { + minerals: 755, + gas: 335, + }, + unspent_resources: { + minerals: 1845, + gas: 912, + }, + resource_collection_rate_all: 1090, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4170, + gas: 962, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5132, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6273, + resource_collection_rate: { + minerals: 1931, + gas: 313, + }, + unspent_resources: { + minerals: 75, + gas: 139, + }, + resource_collection_rate_all: 2244, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 37, + workers_produced: 37, + workers_lost: 0, + supply: 65, + supply_cap: 70, + supply_block: 20, + spm: 3, + army_value: { + minerals: 1000, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6100, + gas: 864, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 6964, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6273, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 1945, + gas: 948, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4270, + gas: 998, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5268, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6385, + resource_collection_rate: { + minerals: 1931, + gas: 313, + }, + unspent_resources: { + minerals: 75, + gas: 139, + }, + resource_collection_rate_all: 2244, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 37, + workers_produced: 37, + workers_lost: 0, + supply: 65, + supply_cap: 70, + supply_block: 20, + spm: 3, + army_value: { + minerals: 1000, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6100, + gas: 864, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 6964, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6385, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 1945, + gas: 948, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4270, + gas: 998, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5268, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6496, + resource_collection_rate: { + minerals: 1819, + gas: 335, + }, + unspent_resources: { + minerals: 15, + gas: 29, + }, + resource_collection_rate_all: 2154, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 38, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 38, + workers_produced: 38, + workers_lost: 0, + supply: 69, + supply_cap: 78, + supply_block: 20, + spm: 3, + army_value: { + minerals: 1000, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6240, + gas: 904, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 7144, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6496, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2035, + gas: 988, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4360, + gas: 1038, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5398, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6633, + resource_collection_rate: { + minerals: 1931, + gas: 335, + }, + unspent_resources: { + minerals: 175, + gas: 69, + }, + resource_collection_rate_all: 2266, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 39, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 39, + workers_produced: 39, + workers_lost: 0, + supply: 70, + supply_cap: 78, + supply_block: 20, + spm: 6, + army_value: { + minerals: 1000, + gas: 325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6450, + gas: 944, + }, + total_army_value: 1325, + total_resources_lost: 0, + total_resources_collected: 7394, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6633, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 2125, + gas: 1024, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4450, + gas: 1074, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5524, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6720, + resource_collection_rate: { + minerals: 1959, + gas: 335, + }, + unspent_resources: { + minerals: 215, + gas: 105, + }, + resource_collection_rate_all: 2294, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 40, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 40, + workers_produced: 40, + workers_lost: 0, + supply: 73, + supply_cap: 78, + supply_block: 20, + spm: 5, + army_value: { + minerals: 1250, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6640, + gas: 980, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 7620, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6720, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 2125, + gas: 1024, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4450, + gas: 1074, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5524, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6834, + resource_collection_rate: { + minerals: 1959, + gas: 335, + }, + unspent_resources: { + minerals: 215, + gas: 105, + }, + resource_collection_rate_all: 2294, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 1, + Starport: 1, + Factory: 1, + }, + workers_active: 41, + workers_produced: 41, + workers_lost: 0, + supply: 73, + supply_cap: 78, + supply_block: 20, + spm: 5, + army_value: { + minerals: 1250, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6640, + gas: 980, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 7620, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6834, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 2210, + gas: 1064, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4535, + gas: 1114, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5649, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 6944, + resource_collection_rate: { + minerals: 2015, + gas: 313, + }, + unspent_resources: { + minerals: 375, + gas: 141, + }, + resource_collection_rate_all: 2328, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 42, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 42, + workers_produced: 42, + workers_lost: 0, + supply: 74, + supply_cap: 78, + supply_block: 20, + spm: 5, + army_value: { + minerals: 1250, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7000, + gas: 1016, + }, + total_army_value: 1700, + total_resources_lost: 0, + total_resources_collected: 8016, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 6944, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2305, + gas: 1104, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4630, + gas: 1154, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5784, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7057, + resource_collection_rate: { + minerals: 1875, + gas: 313, + }, + unspent_resources: { + minerals: 110, + gas: 56, + }, + resource_collection_rate_all: 2188, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 43, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + Starport: 1, + Factory: 1, + }, + workers_active: 43, + workers_produced: 43, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 25, + spm: 5, + army_value: { + minerals: 1350, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7185, + gas: 1056, + }, + total_army_value: 1800, + total_resources_lost: 0, + total_resources_collected: 8241, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 7057, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2395, + gas: 1144, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4720, + gas: 1194, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5914, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7170, + resource_collection_rate: { + minerals: 1875, + gas: 313, + }, + unspent_resources: { + minerals: 110, + gas: 56, + }, + resource_collection_rate_all: 2188, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 43, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + Starport: 1, + Factory: 1, + }, + workers_active: 43, + workers_produced: 43, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 25, + spm: 7, + army_value: { + minerals: 1350, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7185, + gas: 1056, + }, + total_army_value: 1800, + total_resources_lost: 0, + total_resources_collected: 8241, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 7170, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2395, + gas: 1144, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4720, + gas: 1194, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 5914, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7280, + resource_collection_rate: { + minerals: 1791, + gas: 313, + }, + unspent_resources: { + minerals: 180, + gas: 96, + }, + resource_collection_rate_all: 2104, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + CommandCenter: 1, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 30, + spm: 6, + army_value: { + minerals: 1350, + gas: 450, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7255, + gas: 1096, + }, + total_army_value: 1800, + total_resources_lost: 0, + total_resources_collected: 8351, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 7280, + resource_collection_rate: { + minerals: 727, + gas: 313, + }, + unspent_resources: { + minerals: 2485, + gas: 1180, + }, + resource_collection_rate_all: 1040, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4810, + gas: 1230, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6040, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7394, + resource_collection_rate: { + minerals: 1791, + gas: 313, + }, + unspent_resources: { + minerals: 150, + gas: 136, + }, + resource_collection_rate_all: 2104, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + Reaper: 1, + Marine: 10, + Medivac: 1, + SiegeTank: 2, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 35, + spm: 8, + army_value: { + minerals: 1500, + gas: 600, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7475, + gas: 1136, + }, + total_army_value: 2100, + total_resources_lost: 0, + total_resources_collected: 8611, + race: {}, + workers_killed: 1, + }, + "2": { + gameloop: 7394, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2585, + gas: 1220, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 21, + workers_lost: 1, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4910, + gas: 1270, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6180, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7505, + resource_collection_rate: { + minerals: 1791, + gas: 313, + }, + unspent_resources: { + minerals: 150, + gas: 136, + }, + resource_collection_rate_all: 2104, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: [], + current_selection: { + SiegeTank: 1, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 78, + supply_cap: 78, + supply_block: 35, + spm: 8, + army_value: { + minerals: 1500, + gas: 600, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7475, + gas: 1136, + }, + total_army_value: 2100, + total_resources_lost: 0, + total_resources_collected: 8611, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 7505, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 2585, + gas: 1220, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 19, + workers_produced: 21, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4910, + gas: 1270, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6180, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7617, + resource_collection_rate: { + minerals: 1763, + gas: 358, + }, + unspent_resources: { + minerals: 370, + gas: 176, + }, + resource_collection_rate_all: 2121, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 44, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + }, + workers_active: 44, + workers_produced: 44, + workers_lost: 0, + supply: 82, + supply_cap: 86, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1500, + gas: 600, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 7895, + gas: 1176, + }, + total_army_value: 2100, + total_resources_lost: 0, + total_resources_collected: 9071, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 7617, + resource_collection_rate: { + minerals: 699, + gas: 313, + }, + unspent_resources: { + minerals: 2615, + gas: 1256, + }, + resource_collection_rate_all: 1012, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 4990, + gas: 1306, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6296, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7731, + resource_collection_rate: { + minerals: 1735, + gas: 313, + }, + unspent_resources: { + minerals: 335, + gas: 183, + }, + resource_collection_rate_all: 2048, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Factory: 1, + }, + workers_active: 46, + workers_produced: 46, + workers_lost: 0, + supply: 82, + supply_cap: 86, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1650, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8060, + gas: 1208, + }, + total_army_value: 2375, + total_resources_lost: 0, + total_resources_collected: 9268, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 7731, + resource_collection_rate: { + minerals: 727, + gas: 291, + }, + unspent_resources: { + minerals: 2710, + gas: 1292, + }, + resource_collection_rate_all: 1018, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5085, + gas: 1342, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6427, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7840, + resource_collection_rate: { + minerals: 1735, + gas: 313, + }, + unspent_resources: { + minerals: 335, + gas: 183, + }, + resource_collection_rate_all: 2048, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + FactoryFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + BarracksFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + }, + upgrade: [], + current_selection: { + Barracks: 2, + Starport: 1, + FactoryFlying: 1, + BarracksFlying: 1, + }, + workers_active: 46, + workers_produced: 46, + workers_lost: 0, + supply: 82, + supply_cap: 86, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1650, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8060, + gas: 1208, + }, + total_army_value: 2375, + total_resources_lost: 0, + total_resources_collected: 9268, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 7840, + resource_collection_rate: { + minerals: 727, + gas: 291, + }, + unspent_resources: { + minerals: 2710, + gas: 1292, + }, + resource_collection_rate_all: 1018, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5085, + gas: 1342, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6427, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 7970, + resource_collection_rate: { + minerals: 1651, + gas: 313, + }, + unspent_resources: { + minerals: 445, + gas: 173, + }, + resource_collection_rate_all: 1964, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FactoryTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + FactoryTechLab: 1, + }, + workers_active: 46, + workers_produced: 46, + workers_lost: 0, + supply: 84, + supply_cap: 101, + supply_block: 35, + spm: 6, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8270, + gas: 1198, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 9468, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 7970, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 2795, + gas: 1332, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5170, + gas: 1382, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6552, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8065, + resource_collection_rate: { + minerals: 1931, + gas: 313, + }, + unspent_resources: { + minerals: 435, + gas: 113, + }, + resource_collection_rate_all: 2244, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + Starport: 1, + Factory: 1, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 86, + supply_cap: 101, + supply_block: 35, + spm: 6, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8560, + gas: 1188, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 9748, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8065, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 2885, + gas: 1372, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5260, + gas: 1422, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6682, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8183, + resource_collection_rate: { + minerals: 1931, + gas: 358, + }, + unspent_resources: { + minerals: 685, + gas: 161, + }, + resource_collection_rate_all: 2289, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 48, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + StarportFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + BarracksFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + StarportFlying: 1, + }, + workers_active: 48, + workers_produced: 48, + workers_lost: 0, + supply: 86, + supply_cap: 101, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8810, + gas: 1236, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10046, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8183, + resource_collection_rate: { + minerals: 783, + gas: 313, + }, + unspent_resources: { + minerals: 2980, + gas: 1412, + }, + resource_collection_rate_all: 1096, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5355, + gas: 1462, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6817, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8288, + resource_collection_rate: { + minerals: 1931, + gas: 358, + }, + unspent_resources: { + minerals: 685, + gas: 161, + }, + resource_collection_rate_all: 2289, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 50, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + StarportFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + StarportTechLab: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 3, + StarportFlying: 1, + Factory: 1, + }, + workers_active: 50, + workers_produced: 50, + workers_lost: 0, + supply: 86, + supply_cap: 101, + supply_block: 35, + spm: 9, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8810, + gas: 1236, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10046, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8288, + resource_collection_rate: { + minerals: 783, + gas: 313, + }, + unspent_resources: { + minerals: 2980, + gas: 1412, + }, + resource_collection_rate_all: 1096, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5355, + gas: 1462, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6817, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8400, + resource_collection_rate: { + minerals: 1847, + gas: 582, + }, + unspent_resources: { + minerals: 465, + gas: 187, + }, + resource_collection_rate_all: 2429, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 50, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + EngineeringBay: 2, + }, + workers_active: 50, + workers_produced: 50, + workers_lost: 0, + supply: 88, + supply_cap: 101, + supply_block: 35, + spm: 10, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 8840, + gas: 1262, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10102, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8400, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 3065, + gas: 1452, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5440, + gas: 1502, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 6942, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8516, + resource_collection_rate: { + minerals: 2043, + gas: 671, + }, + unspent_resources: { + minerals: 305, + gas: 63, + }, + resource_collection_rate_all: 2714, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 50, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 50, + workers_produced: 50, + workers_lost: 0, + supply: 92, + supply_cap: 101, + supply_block: 35, + spm: 7, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9030, + gas: 1138, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10168, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8516, + resource_collection_rate: { + minerals: 783, + gas: 358, + }, + unspent_resources: { + minerals: 3160, + gas: 1492, + }, + resource_collection_rate_all: 1141, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5535, + gas: 1542, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7077, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8628, + resource_collection_rate: { + minerals: 2043, + gas: 671, + }, + unspent_resources: { + minerals: 305, + gas: 63, + }, + resource_collection_rate_all: 2714, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 52, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 52, + workers_produced: 52, + workers_lost: 0, + supply: 92, + supply_cap: 101, + supply_block: 35, + spm: 7, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9030, + gas: 1138, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10168, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8628, + resource_collection_rate: { + minerals: 783, + gas: 358, + }, + unspent_resources: { + minerals: 3160, + gas: 1492, + }, + resource_collection_rate_all: 1141, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5535, + gas: 1542, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7077, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8736, + resource_collection_rate: { + minerals: 2099, + gas: 671, + }, + unspent_resources: { + minerals: 300, + gas: 143, + }, + resource_collection_rate_all: 2770, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 52, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 17, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + OrbitalCommandFlying: 1, + }, + workers_active: 52, + workers_produced: 52, + workers_lost: 0, + supply: 94, + supply_cap: 101, + supply_block: 35, + spm: 5, + army_value: { + minerals: 1750, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9225, + gas: 1218, + }, + total_army_value: 2475, + total_resources_lost: 0, + total_resources_collected: 10443, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8736, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3250, + gas: 1524, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5625, + gas: 1574, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7199, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8854, + resource_collection_rate: { + minerals: 2211, + gas: 649, + }, + unspent_resources: { + minerals: 255, + gas: 69, + }, + resource_collection_rate_all: 2860, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 54, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + SCV: 5, + }, + workers_active: 54, + workers_produced: 54, + workers_lost: 0, + supply: 98, + supply_cap: 101, + supply_block: 35, + spm: 5, + army_value: { + minerals: 1950, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9380, + gas: 1144, + }, + total_army_value: 2675, + total_resources_lost: 0, + total_resources_collected: 10524, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8854, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3340, + gas: 1564, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5715, + gas: 1614, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7329, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 8960, + resource_collection_rate: { + minerals: 2211, + gas: 649, + }, + unspent_resources: { + minerals: 255, + gas: 69, + }, + resource_collection_rate_all: 2860, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 54, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 5, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 2, + OrbitalCommandFlying: 1, + }, + workers_active: 54, + workers_produced: 54, + workers_lost: 0, + supply: 98, + supply_cap: 101, + supply_block: 35, + spm: 4, + army_value: { + minerals: 1950, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9380, + gas: 1144, + }, + total_army_value: 2675, + total_resources_lost: 0, + total_resources_collected: 10524, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 8960, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3340, + gas: 1564, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5715, + gas: 1614, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7329, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9073, + resource_collection_rate: { + minerals: 2239, + gas: 627, + }, + unspent_resources: { + minerals: 15, + gas: 95, + }, + resource_collection_rate_all: 2866, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 54, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 21, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + EngineeringBay: 2, + }, + workers_active: 54, + workers_produced: 54, + workers_lost: 0, + supply: 100, + supply_cap: 101, + supply_block: 35, + spm: 4, + army_value: { + minerals: 1950, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9615, + gas: 1195, + }, + total_army_value: 2675, + total_resources_lost: 0, + total_resources_collected: 10810, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9073, + resource_collection_rate: { + minerals: 727, + gas: 313, + }, + unspent_resources: { + minerals: 3425, + gas: 1604, + }, + resource_collection_rate_all: 1040, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5800, + gas: 1654, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7454, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9185, + resource_collection_rate: { + minerals: 2183, + gas: 671, + }, + unspent_resources: { + minerals: 180, + gas: 175, + }, + resource_collection_rate_all: 2854, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 54, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + OrbitalCommandFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 54, + workers_produced: 54, + workers_lost: 0, + supply: 104, + supply_cap: 109, + supply_block: 35, + spm: 4, + army_value: { + minerals: 2150, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 9955, + gas: 1300, + }, + total_army_value: 2875, + total_resources_lost: 0, + total_resources_collected: 11255, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9185, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3525, + gas: 1644, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5900, + gas: 1694, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7594, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9301, + resource_collection_rate: { + minerals: 2239, + gas: 649, + }, + unspent_resources: { + minerals: 150, + gas: 151, + }, + resource_collection_rate_all: 2888, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 56, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + WidowMine: 1, + }, + workers_active: 56, + workers_produced: 56, + workers_lost: 0, + supply: 108, + supply_cap: 109, + supply_block: 35, + spm: 5, + army_value: { + minerals: 2150, + gas: 725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10275, + gas: 1376, + }, + total_army_value: 2875, + total_resources_lost: 0, + total_resources_collected: 11651, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9301, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3610, + gas: 1684, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5985, + gas: 1734, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7719, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9409, + resource_collection_rate: { + minerals: 2239, + gas: 649, + }, + unspent_resources: { + minerals: 150, + gas: 151, + }, + resource_collection_rate_all: 2888, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 56, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + EngineeringBay: 2, + }, + workers_active: 56, + workers_produced: 56, + workers_lost: 0, + supply: 108, + supply_cap: 109, + supply_block: 35, + spm: 6, + army_value: { + minerals: 2225, + gas: 750, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10275, + gas: 1376, + }, + total_army_value: 2975, + total_resources_lost: 0, + total_resources_collected: 11651, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9409, + resource_collection_rate: { + minerals: 755, + gas: 313, + }, + unspent_resources: { + minerals: 3610, + gas: 1684, + }, + resource_collection_rate_all: 1068, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 5985, + gas: 1734, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7719, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9529, + resource_collection_rate: { + minerals: 2407, + gas: 627, + }, + unspent_resources: { + minerals: 335, + gas: 227, + }, + resource_collection_rate_all: 3034, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 58, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 25, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 58, + workers_produced: 58, + workers_lost: 0, + supply: 108, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2300, + gas: 775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10460, + gas: 1452, + }, + total_army_value: 3075, + total_resources_lost: 0, + total_resources_collected: 11912, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9529, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 3705, + gas: 1724, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 24, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 225, + gas: 50, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 6080, + gas: 1774, + }, + total_army_value: 275, + total_resources_lost: 0, + total_resources_collected: 7854, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9635, + resource_collection_rate: { + minerals: 2463, + gas: 671, + }, + unspent_resources: { + minerals: 20, + gas: 57, + }, + resource_collection_rate_all: 3134, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 121, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2350, + gas: 775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10845, + gas: 1532, + }, + total_army_value: 3125, + total_resources_lost: 0, + total_resources_collected: 12377, + race: {}, + workers_killed: 2, + }, + "2": { + gameloop: 9635, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 3545, + gas: 1739, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 22, + workers_lost: 2, + supply: 23, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6170, + gas: 1814, + }, + total_army_value: 0, + total_resources_lost: 275, + total_resources_collected: 7984, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9745, + resource_collection_rate: { + minerals: 2463, + gas: 671, + }, + unspent_resources: { + minerals: 20, + gas: 57, + }, + resource_collection_rate_all: 3134, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 59, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 59, + workers_produced: 59, + workers_lost: 0, + supply: 121, + supply_cap: 141, + supply_block: 35, + spm: 2, + army_value: { + minerals: 2350, + gas: 775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 10845, + gas: 1532, + }, + total_army_value: 3125, + total_resources_lost: 0, + total_resources_collected: 12377, + race: {}, + workers_killed: 3, + }, + "2": { + gameloop: 9745, + resource_collection_rate: { + minerals: 755, + gas: 358, + }, + unspent_resources: { + minerals: 3545, + gas: 1739, + }, + resource_collection_rate_all: 1113, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 23, + workers_lost: 3, + supply: 23, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6170, + gas: 1814, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 7984, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9856, + resource_collection_rate: { + minerals: 2715, + gas: 649, + }, + unspent_resources: { + minerals: 15, + gas: 133, + }, + resource_collection_rate_all: 3364, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 61, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 26, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 61, + workers_produced: 61, + workers_lost: 0, + supply: 122, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2350, + gas: 775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11040, + gas: 1608, + }, + total_army_value: 3125, + total_resources_lost: 0, + total_resources_collected: 12648, + race: {}, + workers_killed: 4, + }, + "2": { + gameloop: 9856, + resource_collection_rate: { + minerals: 643, + gas: 291, + }, + unspent_resources: { + minerals: 3420, + gas: 1667, + }, + resource_collection_rate_all: 934, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 19, + workers_produced: 23, + workers_lost: 4, + supply: 23, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6245, + gas: 1842, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8087, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 9977, + resource_collection_rate: { + minerals: 2799, + gas: 649, + }, + unspent_resources: { + minerals: 215, + gas: 209, + }, + resource_collection_rate_all: 3448, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 62, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 28, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 62, + workers_produced: 62, + workers_lost: 0, + supply: 124, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2450, + gas: 775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11340, + gas: 1684, + }, + total_army_value: 3225, + total_resources_lost: 0, + total_resources_collected: 13024, + race: {}, + workers_killed: 5, + }, + "2": { + gameloop: 9977, + resource_collection_rate: { + minerals: 587, + gas: 313, + }, + unspent_resources: { + minerals: 3435, + gas: 1707, + }, + resource_collection_rate_all: 900, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 5, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 19, + workers_produced: 24, + workers_lost: 5, + supply: 23, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6310, + gas: 1882, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8192, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10080, + resource_collection_rate: { + minerals: 3079, + gas: 627, + }, + unspent_resources: { + minerals: 60, + gas: 35, + }, + resource_collection_rate_all: 3706, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 63, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + SCV: 2, + }, + workers_active: 63, + workers_produced: 63, + workers_lost: 0, + supply: 135, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2750, + gas: 850, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11685, + gas: 1660, + }, + total_army_value: 3600, + total_resources_lost: 0, + total_resources_collected: 13345, + race: {}, + workers_killed: 6, + }, + "2": { + gameloop: 10080, + resource_collection_rate: { + minerals: 587, + gas: 313, + }, + unspent_resources: { + minerals: 3435, + gas: 1707, + }, + resource_collection_rate_all: 900, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 6, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 24, + workers_lost: 6, + supply: 23, + supply_cap: 31, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6310, + gas: 1882, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8192, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10194, + resource_collection_rate: { + minerals: 3079, + gas: 627, + }, + unspent_resources: { + minerals: 60, + gas: 35, + }, + resource_collection_rate_all: 3706, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 64, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: [], + current_selection: { + SCV: 1, + }, + workers_active: 64, + workers_produced: 64, + workers_lost: 0, + supply: 135, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2850, + gas: 950, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 11685, + gas: 1660, + }, + total_army_value: 3800, + total_resources_lost: 0, + total_resources_collected: 13345, + race: {}, + workers_killed: 7, + }, + "2": { + gameloop: 10194, + resource_collection_rate: { + minerals: 643, + gas: 291, + }, + unspent_resources: { + minerals: 3460, + gas: 1743, + }, + resource_collection_rate_all: 934, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 7, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 25, + workers_lost: 7, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6335, + gas: 1918, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8253, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10312, + resource_collection_rate: { + minerals: 2939, + gas: 694, + }, + unspent_resources: { + minerals: 150, + gas: 123, + }, + resource_collection_rate_all: 3633, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 65, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 29, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 65, + workers_produced: 65, + workers_lost: 0, + supply: 139, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 2850, + gas: 950, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12075, + gas: 1848, + }, + total_army_value: 3800, + total_resources_lost: 0, + total_resources_collected: 13923, + race: {}, + workers_killed: 8, + }, + "2": { + gameloop: 10312, + resource_collection_rate: { + minerals: 615, + gas: 291, + }, + unspent_resources: { + minerals: 3495, + gas: 1779, + }, + resource_collection_rate_all: 906, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 26, + workers_lost: 8, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6420, + gas: 1954, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8374, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10427, + resource_collection_rate: { + minerals: 2771, + gas: 895, + }, + unspent_resources: { + minerals: 85, + gas: 239, + }, + resource_collection_rate_all: 3666, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 67, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + SCV: 4, + }, + workers_active: 67, + workers_produced: 67, + workers_lost: 0, + supply: 140, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 3000, + gas: 950, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12160, + gas: 1964, + }, + total_army_value: 3950, + total_resources_lost: 0, + total_resources_collected: 14124, + race: {}, + workers_killed: 8, + }, + "2": { + gameloop: 10427, + resource_collection_rate: { + minerals: 615, + gas: 313, + }, + unspent_resources: { + minerals: 3505, + gas: 1819, + }, + resource_collection_rate_all: 928, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 8, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 26, + workers_lost: 8, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6480, + gas: 1994, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8474, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10560, + resource_collection_rate: { + minerals: 2715, + gas: 985, + }, + unspent_resources: { + minerals: 65, + gas: 280, + }, + resource_collection_rate_all: 3700, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 68, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 5, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 68, + workers_produced: 68, + workers_lost: 0, + supply: 140, + supply_cap: 141, + supply_block: 35, + spm: 3, + army_value: { + minerals: 3150, + gas: 1000, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12540, + gas: 2005, + }, + total_army_value: 4150, + total_resources_lost: 0, + total_resources_collected: 14545, + race: {}, + workers_killed: 9, + }, + "2": { + gameloop: 10560, + resource_collection_rate: { + minerals: 615, + gas: 313, + }, + unspent_resources: { + minerals: 3505, + gas: 1819, + }, + resource_collection_rate_all: 928, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 9, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 27, + workers_lost: 9, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6480, + gas: 1994, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8474, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10643, + resource_collection_rate: { + minerals: 2715, + gas: 985, + }, + unspent_resources: { + minerals: 65, + gas: 280, + }, + resource_collection_rate_all: 3700, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 5, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 140, + supply_cap: 141, + supply_block: 35, + spm: 2, + army_value: { + minerals: 3150, + gas: 1000, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12540, + gas: 2005, + }, + total_army_value: 4150, + total_resources_lost: 0, + total_resources_collected: 14545, + race: {}, + workers_killed: 10, + }, + "2": { + gameloop: 10643, + resource_collection_rate: { + minerals: 531, + gas: 313, + }, + unspent_resources: { + minerals: 3565, + gas: 1855, + }, + resource_collection_rate_all: 844, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 17, + workers_produced: 27, + workers_lost: 10, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 100, + gas: 25, + }, + resources_lost: { + minerals: 225, + gas: 50, + }, + resources_collected: { + minerals: 6590, + gas: 2030, + }, + total_army_value: 125, + total_resources_lost: 275, + total_resources_collected: 8620, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10755, + resource_collection_rate: { + minerals: 2435, + gas: 1007, + }, + unspent_resources: { + minerals: 5, + gas: 371, + }, + resource_collection_rate_all: 3442, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 9, + died: 0, + in_progress: 5, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + Starport: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 141, + supply_cap: 141, + supply_block: 40, + spm: 1, + army_value: { + minerals: 3250, + gas: 1100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12530, + gas: 2096, + }, + total_army_value: 4350, + total_resources_lost: 0, + total_resources_collected: 14626, + race: {}, + workers_killed: 11, + }, + "2": { + gameloop: 10755, + resource_collection_rate: { + minerals: 475, + gas: 291, + }, + unspent_resources: { + minerals: 3585, + gas: 1891, + }, + resource_collection_rate_all: 766, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 17, + workers_produced: 28, + workers_lost: 11, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6660, + gas: 2066, + }, + total_army_value: 0, + total_resources_lost: 400, + total_resources_collected: 8726, + race: {}, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10866, + resource_collection_rate: { + minerals: 2435, + gas: 1007, + }, + unspent_resources: { + minerals: 5, + gas: 371, + }, + resource_collection_rate_all: 3442, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 10, + died: 0, + in_progress: 5, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["Stimpack"], + current_selection: { + SCV: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 141, + supply_cap: 141, + supply_block: 40, + spm: 1, + army_value: { + minerals: 3350, + gas: 1200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 12530, + gas: 2096, + }, + total_army_value: 4550, + total_resources_lost: 0, + total_resources_collected: 14626, + race: {}, + workers_killed: 12, + }, + "2": { + gameloop: 10866, + resource_collection_rate: { + minerals: 475, + gas: 291, + }, + unspent_resources: { + minerals: 3585, + gas: 1891, + }, + resource_collection_rate_all: 766, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 12, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 16, + workers_produced: 28, + workers_lost: 12, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 0, + gas: 0, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6660, + gas: 2066, + }, + total_army_value: 0, + total_resources_lost: 400, + total_resources_collected: 8726, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 10977, + resource_collection_rate: { + minerals: 2799, + gas: 963, + }, + unspent_resources: { + minerals: 85, + gas: 183, + }, + resource_collection_rate_all: 3762, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 32, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 13, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1"], + current_selection: { + OrbitalCommand: 3, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 149, + supply_cap: 149, + supply_block: 45, + spm: 1, + army_value: { + minerals: 3350, + gas: 1200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 13110, + gas: 1958, + }, + total_army_value: 4550, + total_resources_lost: 0, + total_resources_collected: 15068, + race: {}, + workers_killed: 13, + }, + "2": { + gameloop: 10977, + resource_collection_rate: { + minerals: 503, + gas: 291, + }, + unspent_resources: { + minerals: 3440, + gas: 1802, + }, + resource_collection_rate_all: 794, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 28, + workers_lost: 13, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 125, + gas: 50, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6665, + gas: 2102, + }, + total_army_value: 175, + total_resources_lost: 400, + total_resources_collected: 8767, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11099, + resource_collection_rate: { + minerals: 3107, + gas: 940, + }, + unspent_resources: { + minerals: 305, + gas: 149, + }, + resource_collection_rate_all: 4047, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 10, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 33, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 14, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1"], + current_selection: { + SCV: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 159, + supply_cap: 181, + supply_block: 45, + spm: 1, + army_value: { + minerals: 3400, + gas: 1200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 13930, + gas: 2424, + }, + total_army_value: 4600, + total_resources_lost: 0, + total_resources_collected: 16354, + race: {}, + workers_killed: 14, + }, + "2": { + gameloop: 11099, + resource_collection_rate: { + minerals: 475, + gas: 313, + }, + unspent_resources: { + minerals: 3495, + gas: 1838, + }, + resource_collection_rate_all: 788, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 29, + workers_lost: 14, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 125, + gas: 50, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6770, + gas: 2138, + }, + total_army_value: 175, + total_resources_lost: 400, + total_resources_collected: 8908, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11200, + resource_collection_rate: { + minerals: 3219, + gas: 985, + }, + unspent_resources: { + minerals: 120, + gas: 94, + }, + resource_collection_rate_all: 4204, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 14, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 159, + supply_cap: 181, + supply_block: 45, + spm: 0, + army_value: { + minerals: 3600, + gas: 1200, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14145, + gas: 2369, + }, + total_army_value: 4800, + total_resources_lost: 0, + total_resources_collected: 16514, + race: {}, + workers_killed: 14, + }, + "2": { + gameloop: 11200, + resource_collection_rate: { + minerals: 475, + gas: 313, + }, + unspent_resources: { + minerals: 3495, + gas: 1838, + }, + resource_collection_rate_all: 788, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 29, + workers_lost: 14, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 125, + gas: 50, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6770, + gas: 2138, + }, + total_army_value: 175, + total_resources_lost: 400, + total_resources_collected: 8908, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11313, + resource_collection_rate: { + minerals: 3219, + gas: 985, + }, + unspent_resources: { + minerals: 120, + gas: 94, + }, + resource_collection_rate_all: 4204, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 159, + supply_cap: 181, + supply_block: 45, + spm: 1, + army_value: { + minerals: 3800, + gas: 1250, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14145, + gas: 2369, + }, + total_army_value: 5050, + total_resources_lost: 0, + total_resources_collected: 16514, + race: {}, + workers_killed: 16, + }, + "2": { + gameloop: 11313, + resource_collection_rate: { + minerals: 419, + gas: 313, + }, + unspent_resources: { + minerals: 3465, + gas: 1799, + }, + resource_collection_rate_all: 732, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 16, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 30, + workers_lost: 16, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 125, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6740, + gas: 2099, + }, + total_army_value: 275, + total_resources_lost: 400, + total_resources_collected: 8839, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11439, + resource_collection_rate: { + minerals: 3219, + gas: 963, + }, + unspent_resources: { + minerals: 10, + gas: 135, + }, + resource_collection_rate_all: 4182, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 169, + supply_cap: 189, + supply_block: 45, + spm: 1, + army_value: { + minerals: 3950, + gas: 1300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14535, + gas: 2485, + }, + total_army_value: 5250, + total_resources_lost: 0, + total_resources_collected: 17020, + race: {}, + workers_killed: 16, + }, + "2": { + gameloop: 11439, + resource_collection_rate: { + minerals: 447, + gas: 291, + }, + unspent_resources: { + minerals: 3530, + gas: 1831, + }, + resource_collection_rate_all: 738, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 16, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 30, + workers_lost: 16, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 125, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6880, + gas: 2206, + }, + total_army_value: 275, + total_resources_lost: 400, + total_resources_collected: 9086, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11540, + resource_collection_rate: { + minerals: 3415, + gas: 985, + }, + unspent_resources: { + minerals: 275, + gas: 201, + }, + resource_collection_rate_all: 4400, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 37, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 173, + supply_cap: 189, + supply_block: 45, + spm: 1, + army_value: { + minerals: 3950, + gas: 1300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14950, + gas: 2601, + }, + total_army_value: 5250, + total_resources_lost: 0, + total_resources_collected: 17551, + race: {}, + workers_killed: 17, + }, + "2": { + gameloop: 11540, + resource_collection_rate: { + minerals: 475, + gas: 246, + }, + unspent_resources: { + minerals: 3535, + gas: 1855, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 31, + workers_lost: 17, + supply: 18, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 150, + gas: 125, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6885, + gas: 2230, + }, + total_army_value: 275, + total_resources_lost: 400, + total_resources_collected: 9115, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11649, + resource_collection_rate: { + minerals: 3415, + gas: 985, + }, + unspent_resources: { + minerals: 275, + gas: 201, + }, + resource_collection_rate_all: 4400, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Starport: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 173, + supply_cap: 189, + supply_block: 45, + spm: 1, + army_value: { + minerals: 4150, + gas: 1300, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 14950, + gas: 2601, + }, + total_army_value: 5450, + total_resources_lost: 0, + total_resources_collected: 17551, + race: {}, + workers_killed: 18, + }, + "2": { + gameloop: 11649, + resource_collection_rate: { + minerals: 475, + gas: 246, + }, + unspent_resources: { + minerals: 3535, + gas: 1855, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 18, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 31, + workers_lost: 18, + supply: 18, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6885, + gas: 2230, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9115, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11760, + resource_collection_rate: { + minerals: 3443, + gas: 963, + }, + unspent_resources: { + minerals: 430, + gas: 138, + }, + resource_collection_rate_all: 4406, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 5, + Starport: 1, + Factory: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 173, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 4250, + gas: 1325, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15105, + gas: 2538, + }, + total_army_value: 5575, + total_resources_lost: 0, + total_resources_collected: 17643, + race: {}, + workers_killed: 18, + }, + "2": { + gameloop: 11760, + resource_collection_rate: { + minerals: 503, + gas: 223, + }, + unspent_resources: { + minerals: 3535, + gas: 1879, + }, + resource_collection_rate_all: 726, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 18, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 31, + workers_lost: 18, + supply: 18, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 6935, + gas: 2254, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9189, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11874, + resource_collection_rate: { + minerals: 3303, + gas: 985, + }, + unspent_resources: { + minerals: 180, + gas: 108, + }, + resource_collection_rate_all: 4288, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Marine: 8, + WidowMine: 2, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 183, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 4750, + gas: 1675, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15355, + gas: 2533, + }, + total_army_value: 6425, + total_resources_lost: 0, + total_resources_collected: 17888, + race: {}, + workers_killed: 18, + }, + "2": { + gameloop: 11874, + resource_collection_rate: { + minerals: 475, + gas: 246, + }, + unspent_resources: { + minerals: 3595, + gas: 1907, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 18, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 32, + workers_lost: 18, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7045, + gas: 2282, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9327, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 11987, + resource_collection_rate: { + minerals: 3303, + gas: 985, + }, + unspent_resources: { + minerals: 180, + gas: 108, + }, + resource_collection_rate_all: 4288, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 69, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 69, + workers_produced: 69, + workers_lost: 0, + supply: 183, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 4900, + gas: 1725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 15355, + gas: 2533, + }, + total_army_value: 6625, + total_resources_lost: 0, + total_resources_collected: 17888, + race: {}, + workers_killed: 18, + }, + "2": { + gameloop: 11987, + resource_collection_rate: { + minerals: 475, + gas: 246, + }, + unspent_resources: { + minerals: 3595, + gas: 1907, + }, + resource_collection_rate_all: 721, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 18, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 32, + workers_lost: 18, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7045, + gas: 2282, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9327, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12104, + resource_collection_rate: { + minerals: 3247, + gas: 963, + }, + unspent_resources: { + minerals: 430, + gas: 170, + }, + resource_collection_rate_all: 4210, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 11, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 41, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + FusionCore: 1, + EngineeringBay: 2, + Armory: 1, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 193, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 4900, + gas: 1725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16055, + gas: 2945, + }, + total_army_value: 6625, + total_resources_lost: 0, + total_resources_collected: 19000, + race: {}, + workers_killed: 18, + }, + "2": { + gameloop: 12104, + resource_collection_rate: { + minerals: 503, + gas: 246, + }, + unspent_resources: { + minerals: 3595, + gas: 1939, + }, + resource_collection_rate_all: 749, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 18, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 33, + workers_lost: 18, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7045, + gas: 2314, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9359, + race: { + warpgate_efficiency: [-0.874, 37.3], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12208, + resource_collection_rate: { + minerals: 3247, + gas: 940, + }, + unspent_resources: { + minerals: 550, + gas: 11, + }, + resource_collection_rate_all: 4187, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 46, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 1, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 195, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 5150, + gas: 1725, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16275, + gas: 2786, + }, + total_army_value: 6875, + total_resources_lost: 0, + total_resources_collected: 19061, + race: {}, + workers_killed: 19, + }, + "2": { + gameloop: 12208, + resource_collection_rate: { + minerals: 447, + gas: 246, + }, + unspent_resources: { + minerals: 3545, + gas: 1942, + }, + resource_collection_rate_all: 693, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 19, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 33, + workers_lost: 19, + supply: 22, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7145, + gas: 2342, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9487, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12320, + resource_collection_rate: { + minerals: 2911, + gas: 985, + }, + unspent_resources: { + minerals: 26, + gas: 131, + }, + resource_collection_rate_all: 3896, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 47, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMine: { + type: ["UNIT"], + live: 10, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 5, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 195, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 5300, + gas: 1750, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16151, + gas: 2906, + }, + total_army_value: 7050, + total_resources_lost: 0, + total_resources_collected: 19057, + race: {}, + workers_killed: 20, + }, + "2": { + gameloop: 12320, + resource_collection_rate: { + minerals: 447, + gas: 246, + }, + unspent_resources: { + minerals: 3545, + gas: 1942, + }, + resource_collection_rate_all: 693, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 20, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 33, + workers_lost: 20, + supply: 22, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 175, + gas: 200, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7145, + gas: 2342, + }, + total_army_value: 375, + total_resources_lost: 400, + total_resources_collected: 9487, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12433, + resource_collection_rate: { + minerals: 2911, + gas: 985, + }, + unspent_resources: { + minerals: 26, + gas: 131, + }, + resource_collection_rate_all: 3896, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 47, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 11, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + CommandCenter: 1, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 195, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 5375, + gas: 1775, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16151, + gas: 2906, + }, + total_army_value: 7150, + total_resources_lost: 0, + total_resources_collected: 19057, + race: {}, + workers_killed: 21, + }, + "2": { + gameloop: 12433, + resource_collection_rate: { + minerals: 447, + gas: 223, + }, + unspent_resources: { + minerals: 3550, + gas: 1974, + }, + resource_collection_rate_all: 670, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 21, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 34, + workers_lost: 21, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7150, + gas: 2374, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9524, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12545, + resource_collection_rate: { + minerals: 2547, + gas: 963, + }, + unspent_resources: { + minerals: 239, + gas: 243, + }, + resource_collection_rate_all: 3510, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 13, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTankSieged: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + SiegeTank: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + WidowMine: { + type: ["UNIT"], + live: 12, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenter: 2, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 197, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 5550, + gas: 1800, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 16764, + gas: 3018, + }, + total_army_value: 7350, + total_resources_lost: 0, + total_resources_collected: 19782, + race: {}, + workers_killed: 22, + }, + "2": { + gameloop: 12545, + resource_collection_rate: { + minerals: 447, + gas: 201, + }, + unspent_resources: { + minerals: 3605, + gas: 1998, + }, + resource_collection_rate_all: 648, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 22, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 12, + workers_produced: 34, + workers_lost: 22, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7255, + gas: 2398, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9653, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12667, + resource_collection_rate: { + minerals: 2491, + gas: 985, + }, + unspent_resources: { + minerals: 379, + gas: 338, + }, + resource_collection_rate_all: 3476, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 71, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Marine: 45, + Marauder: 7, + WidowMine: 14, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + Liberator: 3, + }, + workers_active: 71, + workers_produced: 71, + workers_lost: 0, + supply: 200, + supply_cap: 205, + supply_block: 45, + spm: 1, + army_value: { + minerals: 5550, + gas: 1800, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17204, + gas: 3138, + }, + total_army_value: 7350, + total_resources_lost: 0, + total_resources_collected: 20342, + race: {}, + workers_killed: 22, + }, + "2": { + gameloop: 12667, + resource_collection_rate: { + minerals: 447, + gas: 156, + }, + unspent_resources: { + minerals: 3610, + gas: 2014, + }, + resource_collection_rate_all: 603, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 22, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 35, + workers_lost: 22, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7310, + gas: 2414, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9724, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12771, + resource_collection_rate: { + minerals: 2491, + gas: 985, + }, + unspent_resources: { + minerals: 379, + gas: 338, + }, + resource_collection_rate_all: 3476, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 4, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 205, + supply_block: 45, + spm: 2, + army_value: { + minerals: 5550, + gas: 1800, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17204, + gas: 3138, + }, + total_army_value: 7350, + total_resources_lost: 0, + total_resources_collected: 20342, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 12771, + resource_collection_rate: { + minerals: 447, + gas: 156, + }, + unspent_resources: { + minerals: 3610, + gas: 2014, + }, + resource_collection_rate_all: 603, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 12, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 12, + workers_produced: 35, + workers_lost: 23, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7310, + gas: 2414, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9724, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12883, + resource_collection_rate: { + minerals: 2435, + gas: 1007, + }, + unspent_resources: { + minerals: 694, + gas: 454, + }, + resource_collection_rate_all: 3442, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + CommandCenterFlying: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 2, + army_value: { + minerals: 5850, + gas: 2100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17519, + gas: 3254, + }, + total_army_value: 7950, + total_resources_lost: 0, + total_resources_collected: 20773, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 12883, + resource_collection_rate: { + minerals: 447, + gas: 111, + }, + unspent_resources: { + minerals: 3610, + gas: 2030, + }, + resource_collection_rate_all: 558, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 36, + workers_lost: 23, + supply: 19, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7310, + gas: 2430, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9740, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 12997, + resource_collection_rate: { + minerals: 2575, + gas: 963, + }, + unspent_resources: { + minerals: 859, + gas: 416, + }, + resource_collection_rate_all: 3538, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 7, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 7, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 2, + army_value: { + minerals: 5850, + gas: 2100, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17684, + gas: 3216, + }, + total_army_value: 7950, + total_resources_lost: 0, + total_resources_collected: 20900, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 12997, + resource_collection_rate: { + minerals: 391, + gas: 156, + }, + unspent_resources: { + minerals: 3605, + gas: 2054, + }, + resource_collection_rate_all: 547, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 36, + workers_lost: 23, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7355, + gas: 2454, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9809, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13104, + resource_collection_rate: { + minerals: 2575, + gas: 963, + }, + unspent_resources: { + minerals: 859, + gas: 416, + }, + resource_collection_rate_all: 3538, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenterFlying: 1, + CommandCenter: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 2, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17684, + gas: 3216, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 20900, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13104, + resource_collection_rate: { + minerals: 391, + gas: 156, + }, + unspent_resources: { + minerals: 3605, + gas: 2054, + }, + resource_collection_rate_all: 547, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 14, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 14, + workers_produced: 37, + workers_lost: 23, + supply: 20, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7355, + gas: 2454, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9809, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13216, + resource_collection_rate: { + minerals: 2295, + gas: 963, + }, + unspent_resources: { + minerals: 969, + gas: 532, + }, + resource_collection_rate_all: 3258, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + FusionCore: 1, + EngineeringBay: 2, + Armory: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 2, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 17794, + gas: 3332, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 21126, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13216, + resource_collection_rate: { + minerals: 391, + gas: 223, + }, + unspent_resources: { + minerals: 3255, + gas: 2082, + }, + resource_collection_rate_all: 614, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 38, + workers_lost: 23, + supply: 21, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7455, + gas: 2482, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 9937, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13332, + resource_collection_rate: { + minerals: 2099, + gas: 985, + }, + unspent_resources: { + minerals: 1224, + gas: 648, + }, + resource_collection_rate_all: 3084, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 1, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18199, + gas: 3448, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 21647, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13332, + resource_collection_rate: { + minerals: 419, + gas: 268, + }, + unspent_resources: { + minerals: 3260, + gas: 2118, + }, + resource_collection_rate_all: 687, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 38, + workers_lost: 23, + supply: 22, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7510, + gas: 2518, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 10028, + race: { + warpgate_efficiency: [-0.68, 71.8], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13440, + resource_collection_rate: { + minerals: 2071, + gas: 963, + }, + unspent_resources: { + minerals: 1394, + gas: 764, + }, + resource_collection_rate_all: 3034, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 5, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenterFlying: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + OrbitalCommand: 3, + CommandCenterFlying: 1, + CommandCenter: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18469, + gas: 3564, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 22033, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13440, + resource_collection_rate: { + minerals: 419, + gas: 268, + }, + unspent_resources: { + minerals: 3260, + gas: 2118, + }, + resource_collection_rate_all: 687, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 15, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 15, + workers_produced: 38, + workers_lost: 23, + supply: 22, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7510, + gas: 2518, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 10028, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13553, + resource_collection_rate: { + minerals: 2071, + gas: 963, + }, + unspent_resources: { + minerals: 1394, + gas: 764, + }, + resource_collection_rate_all: 3034, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18469, + gas: 3564, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 22033, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13553, + resource_collection_rate: { + minerals: 419, + gas: 313, + }, + unspent_resources: { + minerals: 3160, + gas: 2154, + }, + resource_collection_rate_all: 732, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 16, + workers_produced: 39, + workers_lost: 23, + supply: 24, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7510, + gas: 2554, + }, + total_army_value: 500, + total_resources_lost: 400, + total_resources_collected: 10064, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13667, + resource_collection_rate: { + minerals: 2239, + gas: 963, + }, + unspent_resources: { + minerals: 709, + gas: 730, + }, + resource_collection_rate_all: 3202, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 4, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + Barracks: 8, + Starport: 1, + Factory: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 18334, + gas: 3680, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 22014, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13667, + resource_collection_rate: { + minerals: 475, + gas: 313, + }, + unspent_resources: { + minerals: 3220, + gas: 2190, + }, + resource_collection_rate_all: 788, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 16, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 16, + workers_produced: 39, + workers_lost: 23, + supply: 25, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7620, + gas: 2590, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10210, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13794, + resource_collection_rate: { + minerals: 2659, + gas: 985, + }, + unspent_resources: { + minerals: 114, + gas: 775, + }, + resource_collection_rate_all: 3644, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 5, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19089, + gas: 3800, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 22889, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13794, + resource_collection_rate: { + minerals: 531, + gas: 313, + }, + unspent_resources: { + minerals: 3245, + gas: 2230, + }, + resource_collection_rate_all: 844, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 17, + workers_produced: 40, + workers_lost: 23, + supply: 26, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7695, + gas: 2630, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10325, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 13888, + resource_collection_rate: { + minerals: 2659, + gas: 985, + }, + unspent_resources: { + minerals: 114, + gas: 775, + }, + resource_collection_rate_all: 3644, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 4, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + CommandCenter: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 220, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19089, + gas: 3800, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 22889, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 13888, + resource_collection_rate: { + minerals: 531, + gas: 313, + }, + unspent_resources: { + minerals: 3245, + gas: 2230, + }, + resource_collection_rate_all: 844, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 17, + workers_produced: 40, + workers_lost: 23, + supply: 26, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7695, + gas: 2630, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10325, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14000, + resource_collection_rate: { + minerals: 2715, + gas: 1097, + }, + unspent_resources: { + minerals: 189, + gas: 857, + }, + resource_collection_rate_all: 3812, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 3, + died: 14, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 3, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 4, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + SCV: 4, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 3, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19414, + gas: 3932, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 23346, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14000, + resource_collection_rate: { + minerals: 615, + gas: 335, + }, + unspent_resources: { + minerals: 3265, + gas: 2270, + }, + resource_collection_rate_all: 950, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 17, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 17, + workers_produced: 40, + workers_lost: 23, + supply: 26, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7715, + gas: 2670, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10385, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14112, + resource_collection_rate: { + minerals: 2855, + gas: 1075, + }, + unspent_resources: { + minerals: 419, + gas: 981, + }, + resource_collection_rate_all: 3930, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 4, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: ["Stimpack", "TerranInfantryWeaponsLevel1", "TerranInfantryArmorsLevel1", "PunisherGrenades"], + current_selection: { + FusionCore: 1, + EngineeringBay: 2, + Armory: 1, + GhostAcademy: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 3, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19794, + gas: 4056, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 23850, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14112, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 3345, + gas: 2306, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 41, + workers_lost: 23, + supply: 27, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7845, + gas: 2706, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10551, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14226, + resource_collection_rate: { + minerals: 2855, + gas: 1075, + }, + unspent_resources: { + minerals: 419, + gas: 981, + }, + resource_collection_rate_all: 3930, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 4, + supply: 15, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + FusionCore: 1, + EngineeringBay: 2, + Armory: 1, + GhostAcademy: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 4, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19794, + gas: 4056, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 23850, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14226, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 3345, + gas: 2306, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 18, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 18, + workers_produced: 41, + workers_lost: 23, + supply: 27, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7845, + gas: 2706, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10551, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14337, + resource_collection_rate: { + minerals: 2827, + gas: 1187, + }, + unspent_resources: { + minerals: 494, + gas: 879, + }, + resource_collection_rate_all: 4014, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Liberator: 5, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 7, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 19869, + gas: 3954, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 23823, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14337, + resource_collection_rate: { + minerals: 671, + gas: 313, + }, + unspent_resources: { + minerals: 3375, + gas: 2346, + }, + resource_collection_rate_all: 984, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 19, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 19, + workers_produced: 42, + workers_lost: 23, + supply: 27, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7875, + gas: 2746, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10621, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14450, + resource_collection_rate: { + minerals: 2743, + gas: 1299, + }, + unspent_resources: { + minerals: 864, + gas: 1039, + }, + resource_collection_rate_all: 4042, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + CommandCenter: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Barracks: 8, + Starport: 1, + Factory: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 8, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20239, + gas: 4114, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 24353, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14450, + resource_collection_rate: { + minerals: 699, + gas: 335, + }, + unspent_resources: { + minerals: 3415, + gas: 2386, + }, + resource_collection_rate_all: 1034, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 43, + workers_lost: 23, + supply: 28, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7965, + gas: 2786, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10751, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14560, + resource_collection_rate: { + minerals: 3219, + gas: 1299, + }, + unspent_resources: { + minerals: 1119, + gas: 1045, + }, + resource_collection_rate_all: 4518, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + ], + current_selection: { + Armory: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 9, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20494, + gas: 4120, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 24614, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14560, + resource_collection_rate: { + minerals: 699, + gas: 335, + }, + unspent_resources: { + minerals: 3415, + gas: 2386, + }, + resource_collection_rate_all: 1034, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 43, + workers_lost: 23, + supply: 28, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 7965, + gas: 2786, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10751, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14676, + resource_collection_rate: { + minerals: 3219, + gas: 1299, + }, + unspent_resources: { + minerals: 1119, + gas: 1045, + }, + resource_collection_rate_all: 4518, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + ], + current_selection: { + Armory: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 9, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20494, + gas: 4120, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 24614, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14676, + resource_collection_rate: { + minerals: 727, + gas: 335, + }, + unspent_resources: { + minerals: 3500, + gas: 2426, + }, + resource_collection_rate_all: 1062, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 21, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 21, + workers_produced: 44, + workers_lost: 23, + supply: 29, + supply_cap: 39, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 8100, + gas: 2826, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10926, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14787, + resource_collection_rate: { + minerals: 3583, + gas: 1343, + }, + unspent_resources: { + minerals: 1369, + gas: 1026, + }, + resource_collection_rate_all: 4926, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 6, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Marine: 45, + Marauder: 8, + WidowMine: 14, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 20744, + gas: 4101, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 24845, + race: {}, + workers_killed: 23, + }, + "2": { + gameloop: 14787, + resource_collection_rate: { + minerals: 727, + gas: 313, + }, + unspent_resources: { + minerals: 3465, + gas: 2462, + }, + resource_collection_rate_all: 1040, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 21, + died: 23, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 21, + workers_produced: 44, + workers_lost: 23, + supply: 30, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 8115, + gas: 2862, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 10977, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 14899, + resource_collection_rate: { + minerals: 3583, + gas: 1321, + }, + unspent_resources: { + minerals: 1654, + gas: 1074, + }, + resource_collection_rate_all: 4904, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 6, + died: 15, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Marine: 45, + Marauder: 8, + WidowMine: 14, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 21029, + gas: 4149, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 25178, + race: {}, + workers_killed: 25, + }, + "2": { + gameloop: 14899, + resource_collection_rate: { + minerals: 615, + gas: 291, + }, + unspent_resources: { + minerals: 3485, + gas: 2494, + }, + resource_collection_rate_all: 906, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 20, + died: 25, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 20, + workers_produced: 45, + workers_lost: 25, + supply: 30, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 375, + gas: 225, + }, + resources_lost: { + minerals: 325, + gas: 75, + }, + resources_collected: { + minerals: 8185, + gas: 2894, + }, + total_army_value: 600, + total_resources_lost: 400, + total_resources_collected: 11079, + race: { + warpgate_efficiency: [-0.74, 109.1], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15008, + resource_collection_rate: { + minerals: 3583, + gas: 1321, + }, + unspent_resources: { + minerals: 1654, + gas: 1074, + }, + resource_collection_rate_all: 4904, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Marine: 45, + Marauder: 8, + WidowMine: 13, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + WidowMineBurrowed: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 0, + gas: 0, + }, + resources_collected: { + minerals: 21029, + gas: 4149, + }, + total_army_value: 8075, + total_resources_lost: 0, + total_resources_collected: 25178, + race: {}, + workers_killed: 32, + }, + "2": { + gameloop: 15008, + resource_collection_rate: { + minerals: 615, + gas: 291, + }, + unspent_resources: { + minerals: 3485, + gas: 2494, + }, + resource_collection_rate_all: 906, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 13, + died: 32, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 13, + workers_produced: 45, + workers_lost: 32, + supply: 30, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 275, + gas: 225, + }, + resources_lost: { + minerals: 425, + gas: 75, + }, + resources_collected: { + minerals: 8185, + gas: 2894, + }, + total_army_value: 500, + total_resources_lost: 500, + total_resources_collected: 11079, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15120, + resource_collection_rate: { + minerals: 3807, + gas: 1299, + }, + unspent_resources: { + minerals: 2079, + gas: 1230, + }, + resource_collection_rate_all: 5106, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 48, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 0, + died: 0, + in_progress: 4, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + ], + current_selection: { + Marine: 44, + Marauder: 8, + WidowMine: 13, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + WidowMineBurrowed: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 235, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5900, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 21454, + gas: 4305, + }, + total_army_value: 8025, + total_resources_lost: 50, + total_resources_collected: 25759, + race: {}, + workers_killed: 34, + }, + "2": { + gameloop: 15120, + resource_collection_rate: { + minerals: 363, + gas: 268, + }, + unspent_resources: { + minerals: 3355, + gas: 2476, + }, + resource_collection_rate_all: 631, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 11, + died: 34, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 11, + workers_produced: 45, + workers_lost: 34, + supply: 19, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 775, + gas: 200, + }, + resources_collected: { + minerals: 8230, + gas: 2926, + }, + total_army_value: 200, + total_resources_lost: 975, + total_resources_collected: 11156, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15238, + resource_collection_rate: { + minerals: 3695, + gas: 1276, + }, + unspent_resources: { + minerals: 2479, + gas: 1382, + }, + resource_collection_rate_all: 4971, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 48, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMine: { + type: ["UNIT"], + live: 13, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + OrbitalCommand: 4, + PlanetaryFortress: 1, + CommandCenter: 4, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 199, + supply_cap: 250, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5900, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 21854, + gas: 4457, + }, + total_army_value: 8025, + total_resources_lost: 50, + total_resources_collected: 26311, + race: {}, + workers_killed: 46, + }, + "2": { + gameloop: 15238, + resource_collection_rate: { + minerals: 335, + gas: 201, + }, + unspent_resources: { + minerals: 3265, + gas: 2496, + }, + resource_collection_rate_all: 536, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 1, + died: 46, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 1, + workers_produced: 47, + workers_lost: 46, + supply: 10, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 775, + gas: 200, + }, + resources_collected: { + minerals: 8265, + gas: 2946, + }, + total_army_value: 200, + total_resources_lost: 975, + total_resources_collected: 11211, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15354, + resource_collection_rate: { + minerals: 3695, + gas: 1276, + }, + unspent_resources: { + minerals: 2479, + gas: 1382, + }, + resource_collection_rate_all: 4971, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 48, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + Marine: 45, + Marauder: 8, + WidowMineBurrowed: 14, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 199, + supply_cap: 250, + supply_block: 45, + spm: 12, + army_value: { + minerals: 5900, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 21854, + gas: 4457, + }, + total_army_value: 8025, + total_resources_lost: 50, + total_resources_collected: 26311, + race: {}, + workers_killed: 46, + }, + "2": { + gameloop: 15354, + resource_collection_rate: { + minerals: 335, + gas: 201, + }, + unspent_resources: { + minerals: 3265, + gas: 2496, + }, + resource_collection_rate_all: 536, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 1, + died: 46, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 1, + workers_produced: 47, + workers_lost: 46, + supply: 10, + supply_cap: 54, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 775, + gas: 200, + }, + resources_collected: { + minerals: 8265, + gas: 2946, + }, + total_army_value: 200, + total_resources_lost: 975, + total_resources_collected: 11211, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15457, + resource_collection_rate: { + minerals: 3667, + gas: 1299, + }, + unspent_resources: { + minerals: 2589, + gas: 1292, + }, + resource_collection_rate_all: 4966, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 48, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + OrbitalCommand: 4, + PlanetaryFortress: 1, + CommandCenter: 4, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 11, + army_value: { + minerals: 5900, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 22014, + gas: 4367, + }, + total_army_value: 8025, + total_resources_lost: 50, + total_resources_collected: 26381, + race: {}, + workers_killed: 46, + }, + "2": { + gameloop: 15457, + resource_collection_rate: { + minerals: 111, + gas: 22, + }, + unspent_resources: { + minerals: 3220, + gas: 2496, + }, + resource_collection_rate_all: 133, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 2, + died: 46, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 2, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 2, + workers_produced: 48, + workers_lost: 46, + supply: 4, + supply_cap: 23, + supply_block: 0, + spm: 0, + army_value: { + minerals: 50, + gas: 150, + }, + resources_lost: { + minerals: 775, + gas: 200, + }, + resources_collected: { + minerals: 8295, + gas: 2946, + }, + total_army_value: 200, + total_resources_lost: 975, + total_resources_collected: 11241, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15569, + resource_collection_rate: { + minerals: 3527, + gas: 1321, + }, + unspent_resources: { + minerals: 2989, + gas: 1448, + }, + resource_collection_rate_all: 4848, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 48, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 5, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + Marine: 45, + Marauder: 8, + WidowMineBurrowed: 14, + Medivac: 4, + Reaper: 1, + SiegeTank: 3, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 11, + army_value: { + minerals: 5900, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 22414, + gas: 4523, + }, + total_army_value: 8025, + total_resources_lost: 50, + total_resources_collected: 26937, + race: {}, + workers_killed: 46, + }, + "2": { + gameloop: 15569, + resource_collection_rate: { + minerals: 55, + gas: 0, + }, + unspent_resources: { + minerals: 3130, + gas: 2496, + }, + resource_collection_rate_all: 55, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 2, + died: 46, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 3, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 2, + in_progress: 2, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 2, + workers_produced: 48, + workers_lost: 46, + supply: 4, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 25, + gas: 75, + }, + resources_lost: { + minerals: 800, + gas: 275, + }, + resources_collected: { + minerals: 8355, + gas: 2946, + }, + total_army_value: 100, + total_resources_lost: 1075, + total_resources_collected: 11301, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15680, + resource_collection_rate: { + minerals: 3359, + gas: 1276, + }, + unspent_resources: { + minerals: 3389, + gas: 1596, + }, + resource_collection_rate_all: 4635, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + Liberator: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + LiberatorAG: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + Liberator: 4, + LiberatorAG: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 9, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 22814, + gas: 4671, + }, + total_army_value: 8075, + total_resources_lost: 50, + total_resources_collected: 27485, + race: {}, + workers_killed: 46, + }, + "2": { + gameloop: 15680, + resource_collection_rate: { + minerals: 55, + gas: 0, + }, + unspent_resources: { + minerals: 3130, + gas: 2496, + }, + resource_collection_rate_all: 55, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 2, + died: 46, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 3, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 2, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 2, + workers_produced: 48, + workers_lost: 46, + supply: 4, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 25, + gas: 75, + }, + resources_lost: { + minerals: 800, + gas: 275, + }, + resources_collected: { + minerals: 8355, + gas: 2946, + }, + total_army_value: 100, + total_resources_lost: 1075, + total_resources_collected: 11301, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15793, + resource_collection_rate: { + minerals: 3359, + gas: 1276, + }, + unspent_resources: { + minerals: 3389, + gas: 1596, + }, + resource_collection_rate_all: 4635, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 4, + died: 17, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + Marine: 14, + SiegeTank: 1, + Marauder: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 8, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 22814, + gas: 4671, + }, + total_army_value: 8075, + total_resources_lost: 50, + total_resources_collected: 27485, + race: {}, + workers_killed: 49, + }, + "2": { + gameloop: 15793, + resource_collection_rate: { + minerals: 55, + gas: 0, + }, + unspent_resources: { + minerals: 2685, + gas: 2496, + }, + resource_collection_rate_all: 55, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 49, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 3, + in_progress: 1, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 2, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 49, + workers_lost: 49, + supply: 4, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 25, + gas: 75, + }, + resources_lost: { + minerals: 800, + gas: 275, + }, + resources_collected: { + minerals: 7910, + gas: 2946, + }, + total_army_value: 100, + total_resources_lost: 1075, + total_resources_collected: 10856, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 15914, + resource_collection_rate: { + minerals: 3219, + gas: 1321, + }, + unspent_resources: { + minerals: 3784, + gas: 1756, + }, + resource_collection_rate_all: 4540, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 19, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + Marine: 14, + SiegeTank: 1, + Marauder: 1, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 7, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 23209, + gas: 4831, + }, + total_army_value: 8075, + total_resources_lost: 50, + total_resources_collected: 28040, + race: {}, + workers_killed: 49, + }, + "2": { + gameloop: 15914, + resource_collection_rate: { + minerals: 27, + gas: 0, + }, + unspent_resources: { + minerals: 3090, + gas: 2496, + }, + resource_collection_rate_all: 27, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 49, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 1, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 1, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 49, + workers_lost: 49, + supply: 2, + supply_cap: 15, + supply_block: 0, + spm: 0, + army_value: { + minerals: 25, + gas: 75, + }, + resources_lost: { + minerals: 800, + gas: 275, + }, + resources_collected: { + minerals: 8365, + gas: 2946, + }, + total_army_value: 100, + total_resources_lost: 1075, + total_resources_collected: 11311, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + { + "1": { + gameloop: 16011, + resource_collection_rate: { + minerals: 2995, + gas: 1276, + }, + unspent_resources: { + minerals: 4124, + gas: 1888, + }, + resource_collection_rate_all: 4271, + unit: { + SCV: { + type: ["UNIT", "WORKER"], + live: 74, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + MULE: { + type: ["UNIT"], + live: 2, + died: 19, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Reaper: { + type: ["UNIT"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Marine: { + type: ["UNIT"], + live: 49, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + WidowMineBurrowed: { + type: ["UNIT"], + live: 14, + died: 0, + in_progress: 0, + supply: 2, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 25, + }, + Medivac: { + type: ["UNIT"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 100, + }, + SiegeTank: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 125, + }, + LiberatorAG: { + type: ["UNIT"], + live: 2, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + Marauder: { + type: ["UNIT"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Liberator: { + type: ["UNIT"], + live: 3, + died: 0, + in_progress: 0, + supply: 3, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + }, + building: { + OrbitalCommand: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + SupplyDepotLowered: { + type: ["BUILDING"], + live: 3, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + Barracks: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + Refinery: { + type: ["BUILDING"], + live: 8, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + Factory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksReactor: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Bunker: { + type: ["BUILDING"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Starport: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + BarracksTechLab: { + type: ["BUILDING"], + live: 6, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 25, + }, + SupplyDepot: { + type: ["BUILDING"], + live: 15, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + EngineeringBay: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + FactoryReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + StarportReactor: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 50, + }, + Armory: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + FusionCore: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + PlanetaryFortress: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 150, + }, + MissileTurret: { + type: ["BUILDING"], + live: 2, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + CommandCenter: { + type: ["BUILDING"], + live: 4, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + GhostAcademy: { + type: ["BUILDING"], + live: 1, + died: 0, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 50, + }, + }, + upgrade: [ + "Stimpack", + "TerranInfantryWeaponsLevel1", + "TerranInfantryArmorsLevel1", + "PunisherGrenades", + "TerranInfantryWeaponsLevel2", + "LiberatorAGRangeUpgrade", + "TerranShipWeaponsLevel1", + "TerranInfantryArmorsLevel2", + ], + current_selection: { + OrbitalCommand: 4, + PlanetaryFortress: 1, + CommandCenter: 4, + }, + workers_active: 74, + workers_produced: 74, + workers_lost: 0, + supply: 200, + supply_cap: 295, + supply_block: 45, + spm: 5, + army_value: { + minerals: 5950, + gas: 2125, + }, + resources_lost: { + minerals: 50, + gas: 0, + }, + resources_collected: { + minerals: 23549, + gas: 4963, + }, + total_army_value: 8075, + total_resources_lost: 50, + total_resources_collected: 28512, + race: {}, + workers_killed: 49, + }, + "2": { + gameloop: 16011, + resource_collection_rate: { + minerals: 0, + gas: 0, + }, + unspent_resources: { + minerals: 3140, + gas: 2496, + }, + resource_collection_rate_all: 0, + unit: { + Probe: { + type: ["UNIT", "WORKER"], + live: 0, + died: 49, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 50, + gas_cost: 0, + }, + Zealot: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Stalker: { + type: ["UNIT"], + live: 0, + died: 3, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 125, + gas_cost: 50, + }, + Adept: { + type: ["UNIT"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 25, + }, + Observer: { + type: ["UNIT"], + live: 1, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 25, + gas_cost: 75, + }, + }, + building: { + Nexus: { + type: ["BUILDING"], + live: 0, + died: 2, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 400, + gas_cost: 0, + }, + Pylon: { + type: ["BUILDING"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 100, + gas_cost: 0, + }, + Assimilator: { + type: ["BUILDING"], + live: 0, + died: 4, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 75, + gas_cost: 0, + }, + WarpGate: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 0, + gas_cost: 0, + }, + CyberneticsCore: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 0, + }, + RoboticsFacility: { + type: ["BUILDING"], + live: 0, + died: 1, + in_progress: 0, + supply: 0, + supply_provided: 0, + mineral_cost: 150, + gas_cost: 100, + }, + }, + upgrade: ["WarpGateResearch"], + current_selection: {}, + workers_active: 0, + workers_produced: 49, + workers_lost: 49, + supply: 1, + supply_cap: 0, + supply_block: 5, + spm: 0, + army_value: { + minerals: 25, + gas: 75, + }, + resources_lost: { + minerals: 800, + gas: 275, + }, + resources_collected: { + minerals: 8365, + gas: 2946, + }, + total_army_value: 100, + total_resources_lost: 1075, + total_resources_collected: 11311, + race: { + warpgate_efficiency: [-0.924, 158.9], + }, + workers_killed: 0, + }, + }, + ], + player1: { + name: "BuRny", + race: "Terran", + supply_block: 1008, + army_value: { + minerals: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 100, 100, 100, 100, 100, 100, 175, 275, + 275, 350, 450, 450, 550, 550, 550, 750, 750, 900, 1000, 1000, 1000, 1250, 1250, 1350, 1350, 1500, 1500, + 1500, 1650, 1750, 1750, 1750, 1750, 1750, 1950, 1950, 1950, 2150, 2225, 2350, 2350, 2350, 2750, 2850, + 3000, 3150, 3250, 3350, 3400, 3600, 3800, 3950, 4150, 4450, 4900, 5100, 5300, 5450, 5550, 5550, 5850, + 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5900, 5900, 5900, 5950, + 5950, 5950, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 75, 75, 75, 100, + 100, 100, 100, 100, 100, 200, 200, 325, 325, 325, 325, 450, 450, 450, 450, 600, 600, 600, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 750, 775, 775, 775, 850, 950, 950, 1000, 1100, 1200, 1200, 1200, + 1250, 1300, 1300, 1375, 1725, 1725, 1750, 1800, 1800, 1800, 2100, 2125, 2125, 2125, 2125, 2125, 2125, + 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, + ], + }, + collection_rate: { + minerals: [ + 335, 671, 727, 671, 699, 699, 783, 699, 783, 811, 783, 755, 755, 755, 839, 783, 755, 867, 839, 839, 783, + 867, 1007, 1063, 1091, 979, 1231, 1259, 1315, 1455, 1707, 1735, 1847, 1875, 1847, 1847, 1847, 1931, + 1931, 1819, 1931, 1959, 2015, 1875, 1791, 1791, 1763, 1735, 1651, 1931, 1931, 1847, 2043, 2099, 2211, + 2239, 2183, 2239, 2407, 2463, 2715, 2799, 3079, 2939, 2771, 2715, 2435, 2799, 3107, 3219, 3219, 3415, + 3443, 3303, 3247, 3247, 2911, 2547, 2491, 2435, 2575, 2295, 2099, 2071, 2239, 2659, 2715, 2855, 2827, + 2743, 3219, 3583, 3583, 3807, 3695, 3667, 3527, 3359, 3219, 2995, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 111, 156, 156, 179, 156, 156, 156, 156, 156, 179, 179, 156, 179, 223, + 291, 313, 358, 313, 313, 313, 313, 335, 335, 335, 313, 313, 335, 313, 313, 335, 335, 335, 313, 313, 313, + 313, 358, 313, 313, 313, 358, 582, 671, 671, 649, 627, 671, 649, 627, 671, 649, 649, 627, 694, 895, 985, + 1007, 963, 940, 985, 963, 985, 963, 985, 963, 940, 985, 963, 985, 1007, 963, 963, 985, 963, 963, 985, + 1097, 1075, 1187, 1299, 1299, 1343, 1321, 1299, 1276, 1299, 1321, 1276, 1321, 1276, + ], + }, + unspent_resources: { + minerals: [ + 40, 70, 50, 80, 115, 50, 20, 10, 105, 205, 305, 390, 280, 375, 75, 15, 55, 10, 70, 50, 110, 75, 175, + 170, 100, 100, 5, 35, 150, 120, 55, 40, 45, 150, 145, 165, 275, 275, 75, 15, 175, 215, 375, 110, 180, + 150, 370, 335, 445, 435, 685, 465, 305, 300, 255, 15, 180, 150, 335, 20, 15, 215, 60, 150, 85, 65, 5, + 85, 305, 120, 10, 275, 430, 180, 430, 550, 26, 239, 379, 694, 859, 969, 1224, 1394, 709, 114, 189, 419, + 494, 864, 1119, 1369, 1654, 2079, 2479, 2589, 2989, 3389, 3784, 4124, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 40, 10, 30, 46, 66, 86, 6, 26, 46, 16, 32, 56, 59, 99, 139, 54, 86, + 126, 141, 181, 121, 32, 72, 108, 148, 188, 99, 139, 29, 69, 105, 141, 56, 96, 136, 176, 183, 173, 113, + 161, 187, 63, 143, 69, 95, 175, 151, 227, 57, 133, 209, 35, 123, 239, 280, 371, 183, 149, 94, 135, 201, + 138, 108, 170, 11, 131, 243, 338, 454, 416, 532, 648, 764, 730, 775, 857, 981, 879, 1039, 1045, 1026, + 1074, 1230, 1382, 1292, 1448, 1596, 1756, 1888, + ], + }, + upgrades: [ + { + name: "Stimpack", + completed_at: 10211, + }, + { + name: "TerranInfantryWeaponsLevel1", + completed_at: 10960, + }, + { + name: "TerranInfantryArmorsLevel1", + completed_at: 10963, + }, + { + name: "PunisherGrenades", + completed_at: 11170, + }, + { + name: "TerranInfantryWeaponsLevel2", + completed_at: 14118, + }, + { + name: "LiberatorAGRangeUpgrade", + completed_at: 14587, + }, + { + name: "TerranShipWeaponsLevel1", + completed_at: 14703, + }, + { + name: "TerranInfantryArmorsLevel2", + completed_at: 15131, + }, + ], + queues: [ + { + gameloop: 0, + supply_blocked: false, + queues: [], + }, + { + gameloop: 5, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 19, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 276, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 290, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 547, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 561, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 818, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 863, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1134, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1405, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1676, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1825, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 1947, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2096, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2277, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2503, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2551, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2774, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2822, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 2918, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 2983, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3164, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3189, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3451, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3460, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3722, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 3731, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4002, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4273, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4493, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4544, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4764, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4815, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 4839, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5035, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5110, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5306, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5381, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5456, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5577, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5727, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5842, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 5848, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6113, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6115, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6119, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 6239, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6386, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6510, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6657, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6781, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 6928, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7052, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7199, + supply_blocked: true, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7319, + supply_blocked: true, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 7442, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7590, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7713, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 7984, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8255, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8526, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8565, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8797, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 8836, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8973, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 8996, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9228, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9244, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9267, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9439, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9499, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9515, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9538, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9695, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9710, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9770, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9786, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9861, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9891, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 9966, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10041, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10086, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10132, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10237, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10267, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10312, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10403, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10448, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10508, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 10583, + supply_blocked: true, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10707, + supply_blocked: true, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 10978, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11249, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11520, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11791, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11814, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 11819, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12062, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12085, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12090, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12333, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12474, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12478, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12488, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 12604, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 12745, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 12749, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [ + { + name: "SCV", + }, + ], + }, + ], + }, + { + gameloop: 12759, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 12854, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13035, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13216, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13465, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 13736, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14007, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14264, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14445, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14626, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14862, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14887, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 14951, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 15133, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 15182, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 15222, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 15453, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + { + gameloop: 15724, + supply_blocked: false, + queues: [ + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + { + structure_name: "OrbitalCommand", + structure_queue: [], + }, + ], + }, + ], + }, + player2: { + name: "A.I. 1 (Very Easy)", + race: "Protoss", + supply_block: 112, + army_value: { + minerals: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 0, 100, 100, 100, 100, 100, 100, 100, 0, 125, + 125, 150, 150, 175, 175, 175, 175, 175, 275, 275, 275, 275, 275, 275, 275, 275, 375, 375, 375, 375, 375, + 375, 375, 375, 50, 50, 50, 25, 25, 25, 25, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 0, 25, 25, 25, 25, 25, 25, 25, 0, 50, 50, 125, 125, 200, 200, 200, 200, 200, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 150, 150, 150, 75, 75, 75, 75, + ], + }, + collection_rate: { + minerals: [ + 293, 671, 727, 755, 811, 783, 727, 783, 755, 615, 587, 643, 643, 643, 559, 587, 531, 671, 671, 755, 727, + 559, 531, 643, 811, 839, 811, 839, 811, 867, 867, 811, 811, 783, 755, 755, 783, 755, 727, 727, 755, 671, + 727, 727, 727, 727, 699, 727, 755, 755, 783, 755, 783, 755, 755, 727, 755, 755, 755, 755, 643, 587, 643, + 615, 615, 531, 475, 503, 475, 419, 447, 475, 503, 475, 503, 447, 447, 447, 447, 447, 391, 391, 419, 419, + 475, 531, 615, 671, 671, 699, 727, 727, 615, 363, 335, 111, 55, 55, 27, 0, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 22, 134, 134, 134, 156, 156, 291, 313, 313, 313, 358, 358, 291, 313, 246, 291, + 335, 335, 335, 313, 313, 313, 335, 313, 335, 313, 313, 313, 335, 335, 335, 335, 313, 313, 335, 335, 313, + 335, 313, 291, 313, 313, 313, 358, 358, 313, 313, 313, 313, 313, 358, 358, 291, 313, 291, 291, 313, 313, + 291, 291, 313, 313, 291, 246, 223, 246, 246, 246, 223, 201, 156, 111, 156, 223, 268, 313, 313, 313, 335, + 313, 313, 335, 335, 313, 291, 268, 201, 22, 0, 0, 0, 0, + ], + }, + unspent_resources: { + minerals: [ + 35, 70, 45, 135, 160, 95, 75, 185, 260, 340, 340, 375, 145, 170, 185, 250, 265, 305, 330, 410, 495, 505, + 440, 530, 640, 720, 830, 920, 1020, 1120, 1215, 1310, 1400, 1490, 1575, 1670, 1765, 1845, 1945, 2035, + 2125, 2210, 2305, 2395, 2485, 2585, 2615, 2710, 2795, 2885, 2980, 3065, 3160, 3250, 3340, 3425, 3525, + 3610, 3705, 3545, 3420, 3435, 3460, 3495, 3505, 3565, 3585, 3440, 3495, 3465, 3530, 3535, 3535, 3595, + 3595, 3545, 3550, 3605, 3610, 3610, 3605, 3255, 3260, 3160, 3220, 3245, 3265, 3345, 3375, 3415, 3500, + 3465, 3485, 3355, 3265, 3220, 3130, 2685, 3090, 3140, + ], + gas: [ + 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 40, 60, 80, 100, 140, 176, 216, 206, 246, 286, 314, 354, 332, 368, 408, + 444, 484, 520, 560, 600, 640, 676, 716, 752, 792, 832, 872, 912, 948, 988, 1024, 1064, 1104, 1144, 1180, + 1220, 1256, 1292, 1332, 1372, 1412, 1452, 1492, 1524, 1564, 1604, 1644, 1684, 1724, 1739, 1667, 1707, + 1743, 1779, 1819, 1855, 1891, 1802, 1838, 1799, 1831, 1855, 1879, 1907, 1939, 1942, 1974, 1998, 2014, + 2030, 2054, 2082, 2118, 2154, 2190, 2230, 2270, 2306, 2346, 2386, 2426, 2462, 2494, 2476, 2496, 2496, + 2496, 2496, 2496, 2496, + ], + }, + upgrades: [ + { + name: "WarpGateResearch", + completed_at: 4890, + }, + ], + queues: [ + { + gameloop: 0, + supply_blocked: false, + queues: [], + }, + { + gameloop: 5, + supply_blocked: false, + queues: [], + }, + { + gameloop: 19, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 276, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 290, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 547, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 561, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 818, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 863, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1134, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1405, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1676, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 1825, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 1947, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2096, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2277, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2503, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2551, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2774, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2822, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2918, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 2983, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3164, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3189, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3451, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3460, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 3722, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 3731, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4002, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4273, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4493, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4544, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4764, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4815, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 4839, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5035, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5110, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5306, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5381, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5456, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5577, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5727, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5842, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 5848, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6113, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6115, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6119, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6239, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6386, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6510, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6657, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6781, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 6928, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7052, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7199, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7319, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7442, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 7590, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7713, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 7984, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8255, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8526, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8565, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8797, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8836, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8973, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 8996, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9228, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9244, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9267, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 9439, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9499, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9515, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9538, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9695, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9710, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9770, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9786, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9861, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9891, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 9966, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10041, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10086, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10132, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10237, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10267, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10312, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10403, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10448, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10508, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10583, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10707, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 10978, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 11249, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 11520, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 11791, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 11814, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 11819, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12062, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12085, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12090, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12333, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12474, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12478, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12488, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12604, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12745, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12749, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12759, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 12854, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 13035, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 13216, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 13465, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 13736, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14007, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14264, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14445, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14626, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14862, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14887, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 14951, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 15133, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + { + gameloop: 15182, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 15222, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 15453, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [ + { + name: "Probe", + }, + ], + }, + ], + }, + { + gameloop: 15724, + supply_blocked: false, + queues: [ + { + structure_name: "Nexus", + structure_queue: [], + }, + { + structure_name: "Nexus", + structure_queue: [], + }, + ], + }, + ], + }, +} diff --git a/replay_comparer/src/functions/interfaces.ts b/replay_comparer/src/functions/interfaces.ts new file mode 100644 index 00000000..e69de29b diff --git a/replay_comparer/src/global.d.ts b/replay_comparer/src/global.d.ts new file mode 100644 index 00000000..63908c66 --- /dev/null +++ b/replay_comparer/src/global.d.ts @@ -0,0 +1 @@ +/// diff --git a/replay_comparer/src/pages/Home.svelte b/replay_comparer/src/pages/Home.svelte new file mode 100644 index 00000000..0a25e6af --- /dev/null +++ b/replay_comparer/src/pages/Home.svelte @@ -0,0 +1,88 @@ + + +
+
+ handleFilesSelect(e, "1")}>Drop your real replay here +
+ handleFilesSelect(e, "2")}>Drop your ideal replay here +
+
+
Real replay
+ +
Ideal replay
+
+ {#if real_replay_data !== null && ideal_replay_data !== null && !loading} + {#if !swapped} + + {:else} + + {/if} + {:else if loading} + Loading... + {/if} +
diff --git a/replay_comparer/src/routes/index.svelte b/replay_comparer/src/routes/index.svelte new file mode 100644 index 00000000..465a8ed8 --- /dev/null +++ b/replay_comparer/src/routes/index.svelte @@ -0,0 +1,33 @@ + + +{#if mounted} + +{/if} diff --git a/replay_comparer/static/favicon.png b/replay_comparer/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH element in src/app.html + adapter: adapter({ + // default options are shown + pages: "build", + assets: "build", + fallback: null, + }), + paths: { + base: baseUrl, + }, + appDir: "internal", + vite: { + define: { + "process.env": process.env, + }, + }, + }, +} + +export default config From 80f593d4100e45e9c5e8098f1022821a92da4304 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sun, 13 Mar 2022 19:02:05 +0100 Subject: [PATCH 011/391] Fix import --- replay_comparer/src/components/ReplayComparison.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/replay_comparer/src/components/ReplayComparison.svelte b/replay_comparer/src/components/ReplayComparison.svelte index 51fd9aad..b526f2c1 100644 --- a/replay_comparer/src/components/ReplayComparison.svelte +++ b/replay_comparer/src/components/ReplayComparison.svelte @@ -1,6 +1,6 @@ - -
-
- -
{index + 1})
-
{cardText}
-
-
diff --git a/supabase_stream_scripts/src/pages/About.svelte b/supabase_stream_scripts/src/pages/About.svelte deleted file mode 100644 index f3fc816f..00000000 --- a/supabase_stream_scripts/src/pages/About.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -

This is my about page! Here I display features of svelte that I have implemented

- diff --git a/supabase_stream_scripts/src/pages/BrowserStorage.svelte b/supabase_stream_scripts/src/pages/BrowserStorage.svelte deleted file mode 100644 index 9a5dad14..00000000 --- a/supabase_stream_scripts/src/pages/BrowserStorage.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - -
-
-
Local Storage
-
{localStorageValue}
- - - -
-
-
Session Storage
-
{sessionStorageValue}
- - - -
-
diff --git a/supabase_stream_scripts/src/pages/MatchInfo.svelte b/supabase_stream_scripts/src/pages/MatchInfo.svelte index 24bb40a3..c1038385 100644 --- a/supabase_stream_scripts/src/pages/MatchInfo.svelte +++ b/supabase_stream_scripts/src/pages/MatchInfo.svelte @@ -163,7 +163,7 @@ } // Get my mmr await nephestQuery(info.myName, info.myRace, params.server) - if ((validGame === "1v1" || (dev && validGame === "vsComputer")) && info.myMmr !== -1) { + if ((validGame === "1v1" || validGame === "vsComputer") && info.myMmr !== -1) { // Get opponent mmr await nephestQuery(info.opponentName, info.opponentRace, params.server, info.myMmr) await getOpponentStream() diff --git a/supabase_stream_scripts/src/pages/NormalChat.svelte b/supabase_stream_scripts/src/pages/NormalChat.svelte deleted file mode 100644 index d27593cc..00000000 --- a/supabase_stream_scripts/src/pages/NormalChat.svelte +++ /dev/null @@ -1,199 +0,0 @@ - - -{#if userName === ""} - -
-
Connect to chat
- {#if waitingForUserNameResponse === ""} - - {:else} - - {/if} - -
{errorMessage}
-
-{:else} - -
-
- - {#each messages as message} -
- {moment(message.timestamp * 1000).format("HH:mm:ss")} -
- - {#if message.author === userName} -
You
- {:else} -
{message.author}
- {/if} -
{message.message}
- {/each} -
-
- - -
-
-{/if} diff --git a/supabase_stream_scripts/src/pages/TodoPage.svelte b/supabase_stream_scripts/src/pages/TodoPage.svelte deleted file mode 100644 index c55d6952..00000000 --- a/supabase_stream_scripts/src/pages/TodoPage.svelte +++ /dev/null @@ -1,161 +0,0 @@ - - -
-
- - - - -
- {#if !APIserverIsResponding} -
Unable to connect to server - running local mode
- {/if} - {#each cards as { id, todo_text }, _i} - - {/each} - - -
diff --git a/supabase_stream_scripts/src/routes/index.svelte b/supabase_stream_scripts/src/routes/index.svelte index 2e6e3098..e6c12a7e 100644 --- a/supabase_stream_scripts/src/routes/index.svelte +++ b/supabase_stream_scripts/src/routes/index.svelte @@ -2,13 +2,9 @@ import { dev } from "$app/env" import { onMount } from "svelte" - import About from "../pages/About.svelte" - import BrowserStorage from "../pages/BrowserStorage.svelte" import Home from "../pages/Home.svelte" import MatchInfo from "../pages/MatchInfo.svelte" - import NormalChat from "../pages/NormalChat.svelte" import StreamManager from "../pages/StreamManager.svelte" - import TodoPage from "../pages/TodoPage.svelte" // Router url handling let hash: string @@ -54,12 +50,6 @@ - - - -
{/if} @@ -69,14 +59,6 @@ {:else if url.startsWith("/matchinfo")} - {:else if url === "/about"} - - {:else if url === "/chat"} - - {:else if url === "/todo"} - - {:else if url === "/browserstorage"} - {:else if url === ""}
Loading...
{:else} From cc5eae8bcd73670f5dac0e9d1df155455655fd0f Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Thu, 31 Mar 2022 15:18:04 +0200 Subject: [PATCH 019/391] Add supabase stream scripts tests --- .../test_supabase_stream_scripts.yml | 46 + .pre-commit-config.yaml | 8 + replay_comparer/README.md | 5 +- supabase_stream_scripts/jest.config.js | 5 + supabase_stream_scripts/package-lock.json | 26120 ++++++++++------ supabase_stream_scripts/package.json | 9 +- .../src/functions/constants.test.ts | 86 + 7 files changed, 16848 insertions(+), 9431 deletions(-) create mode 100644 .github/workflows/test_supabase_stream_scripts.yml create mode 100644 supabase_stream_scripts/jest.config.js create mode 100644 supabase_stream_scripts/src/functions/constants.test.ts diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml new file mode 100644 index 00000000..f0f92e1e --- /dev/null +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -0,0 +1,46 @@ +name: test_svelte_frontend + + +on: + push: + paths: + - supabase_stream_scripts/** + - .github/workflows/test_supabase_stream_scripts.yml + pull_request: + branches: + - master + - develop + +jobs: + test_frontend: + env: + SUBDIRECTORY: supabase_stream_scripts + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + node: ['12', '14', '16'] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node ${{ matrix.node }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Cache npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + + - name: Install npm dependencies + run: | + cd ${{ env.SUBDIRECTORY }} + npm install + + - name: Run tests + run: | + npm run test diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c6e9a82d..9fb6f683 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -160,6 +160,14 @@ repos: entry: poetry run pytest fastapi_server pass_filenames: false + # Run supabase stream scripts tests + - id: test_supabase_stream_scripts + name: test_supabase_stream_scripts + stages: [commit] + language: system + entry: bash -c "cd supabase_stream_scripts && npm run test" + pass_filenames: false + # Run svelte e2e tests - id: svelte_e2e_tests name: svelte_e2e_tests diff --git a/replay_comparer/README.md b/replay_comparer/README.md index dbfd4ca4..f6a1838f 100644 --- a/replay_comparer/README.md +++ b/replay_comparer/README.md @@ -1,6 +1,7 @@ -# fastapi-svelte-typescript-template +# SC2 Replay Comparer +It uses [Zephyrus sc2 replay plarser](https://github.com/ZephyrBlu/zephyrus-sc2-parser) to get the data from replays, then displays them in [highcharts](https://www.highcharts.com/). -# Live versions +# Live version [Develop branch](https://replaycomparer.netlify.app) # Requirement diff --git a/supabase_stream_scripts/jest.config.js b/supabase_stream_scripts/jest.config.js new file mode 100644 index 00000000..eff1ef00 --- /dev/null +++ b/supabase_stream_scripts/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + transform: { + '^.+\\.ts?$': 'ts-jest', + }, +}; \ No newline at end of file diff --git a/supabase_stream_scripts/package-lock.json b/supabase_stream_scripts/package-lock.json index 7cf9d6be..99779bbc 100644 --- a/supabase_stream_scripts/package-lock.json +++ b/supabase_stream_scripts/package-lock.json @@ -8,7 +8,6 @@ "name": "my-app", "version": "0.0.1", "dependencies": { - "@supabase/gotrue-js": "^1.22.3", "@sveltejs/adapter-static": "^1.0.0-next.21", "@sveltejs/kit": "next", "@zerodevx/svelte-toast": "^0.7.0", @@ -20,6 +19,7 @@ "typescript": "^4.5.5" }, "devDependencies": { + "@supabase/gotrue-js": "^1.22.3", "@supabase/supabase-js": "^1.30.4", "@trivago/prettier-plugin-sort-imports": "^3.2.0", "@typescript-eslint/eslint-plugin": "^5.12.0", @@ -28,9 +28,12 @@ "eslint": "^8.9.0", "eslint-config-prettier": "^8.4.0", "eslint-plugin-svelte3": "^3.4.0", + "fast-check": "^2.24.0", + "jest": "^27.5.1", "npm-check-updates": "^12.3.1", "prettier": "^2.5.1", "prettier-plugin-svelte": "^2.6.0", + "ts-jest": "^27.1.4", "tslib": "^2.3.1", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4" @@ -49,9 +52,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "devOptional": true, "engines": { "node": ">=6.9.0" @@ -100,12 +103,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "devOptional": true, "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -245,28 +248,28 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "devOptional": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "devOptional": true, "dependencies": { "@babel/types": "^7.17.0", @@ -278,9 +281,9 @@ } }, "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "devOptional": true, "bin": { "parser": "bin/babel-parser.js" @@ -323,13 +326,22 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "devOptional": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -392,13 +404,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", "devOptional": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" }, "engines": { @@ -406,9 +418,9 @@ } }, "node_modules/@babel/helpers/node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "devOptional": true, "dependencies": { "@babel/types": "^7.17.0", @@ -420,9 +432,9 @@ } }, "node_modules/@babel/helpers/node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "devOptional": true, "bin": { "parser": "bin/babel-parser.js" @@ -491,6 +503,168 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", @@ -506,9 +680,9 @@ } }, "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "devOptional": true, "bin": { "parser": "bin/babel-parser.js" @@ -558,26 +732,32 @@ "to-fast-properties": "^2.0.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.1", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.0.4", @@ -588,9 +768,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -602,13 +782,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/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, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@gar/promisify": { @@ -618,9 +801,9 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -637,700 +820,725 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "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==", - "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==", - "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==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "sprintf-js": "~1.0.2" } }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@npmcli/git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", - "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz", - "integrity": "sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@jest/console/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, "dependencies": { - "yallist": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/@jest/console/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, "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "node_modules/@jest/console/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, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "node_modules/@jest/console/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 }, - "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "node_modules/@jest/console/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, - "dependencies": { - "infer-owner": "^1.0.4" + "engines": { + "node": ">=8" } }, - "node_modules/@npmcli/run-script": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", - "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", + "node_modules/@jest/console/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, "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^8.2.0", - "read-package-json-fast": "^2.0.1" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", - "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=8" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "node_modules/@jest/core/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" - }, - "node_modules/@supabase/gotrue-js": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.3.tgz", - "integrity": "sha512-w8PYtC23AQpPwwXDyd/YvEfp6O9a5Q50CGhFWNvnc6W82FayQluuJcpZ05K0rQktNvZzYxOkgOAFOm/+dvwrPQ==", + "node_modules/@jest/core/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, "dependencies": { - "cross-fetch": "^3.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@supabase/postgrest-js": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.36.0.tgz", - "integrity": "sha512-KOnhVy8tEr/qNnvOLpFqwOkt7ilRDFMXY+JJfmLjS3+eZuna1G57w4zb3L0SdY6BL7AKnfzP5BG3yHTAuJPSww==", + "node_modules/@jest/core/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, "dependencies": { - "cross-fetch": "^3.0.6" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@supabase/realtime-js": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.3.6.tgz", - "integrity": "sha512-nkQv9A3Z6PgXl32rrQT+mG0oICSpTCTbjChh43GfSIaXXSZ10u5wMzaNqtp4jpqpyjwd8Zr2bDgwAo986T+xyw==", + "node_modules/@jest/core/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 + }, + "node_modules/@jest/core/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, - "dependencies": { - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" + "engines": { + "node": ">=8" } }, - "node_modules/@supabase/storage-js": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.1.tgz", - "integrity": "sha512-0U+yleWmEGd2JynngUpQk/43H/PkNcampGDXcKxj/J+CpAduzdU0Qx9YpL7+a74Q0IeBv4AZUGUA+uxams9XVA==", + "node_modules/@jest/core/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, "dependencies": { - "cross-fetch": "^3.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@supabase/supabase-js": { - "version": "1.30.4", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.30.4.tgz", - "integrity": "sha512-ThBjmQGw0ZD0C7IxOdISCrRMTr1VpcjHI8hqENw61K5Uz0iqWK58HQOHFNkTRAhnrzReLI/pm2O3ifIch30cJQ==", + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "@supabase/gotrue-js": "^1.22.1", - "@supabase/postgrest-js": "^0.36.0", - "@supabase/realtime-js": "^1.3.6", - "@supabase/storage-js": "^1.6.0" + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@sveltejs/adapter-static": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.28.tgz", - "integrity": "sha512-c4xLyeSwnbGQxe4f1SLpHTbxZDm3TEr43scR3tOlVgQN+mnAL9aDdl3nTtdzWmrUDmDEmY4GriAwLyFLZuINLw==", + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, "dependencies": { - "tiny-glob": "^0.2.9" + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.278", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.278.tgz", - "integrity": "sha512-WT93Wnu05X9WG9BMMk/dj0gy6R7iXm9aXRDVgmIl9z8jT2ukejgmkhi5IwBYrK0OMIUALRVfukn+iy+srPc91Q==", + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", - "sade": "^1.7.4", - "vite": "^2.8.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { - "node": ">=14.13" - }, - "peerDependencies": { - "svelte": "^3.44.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.37", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.37.tgz", - "integrity": "sha512-EdSXw2rXeOahNrQfMJVZxa/NxZxW1a0TiBI3s+pVxnxU14hEQtnkLtdbTFhnceu22gJpNPFSIJRcIwRBBDQIeA==", + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, "dependencies": { - "@rollup/pluginutils": "^4.1.2", - "debug": "^4.3.3", - "kleur": "^4.1.4", - "magic-string": "^0.25.7", - "svelte-hmr": "^0.14.9" - }, - "engines": { - "node": "^14.13.1 || >= 16" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "peerDependencies": { - "diff-match-patch": "^1.0.5", - "svelte": "^3.44.0", - "vite": "^2.7.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "diff-match-patch": { + "node-notifier": { "optional": true } } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/@jest/reporters/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, "dependencies": { - "defer-to-connect": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@jest/reporters/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", - "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", + "node_modules/@jest/reporters/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, "dependencies": { - "@babel/core": "7.13.10", - "@babel/generator": "7.13.9", - "@babel/parser": "7.14.6", - "@babel/traverse": "7.13.0", - "@babel/types": "7.13.0", - "javascript-natural-sort": "0.7.1", - "lodash": "4.17.21" + "color-name": "~1.1.4" }, - "peerDependencies": { - "prettier": "2.x" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "node_modules/@jest/reporters/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 + }, + "node_modules/@jest/reporters/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, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "node_modules/@jest/reporters/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, "dependencies": { - "@types/node": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "peer": true, "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "node_modules/@jest/transform/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, "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", - "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==" - }, - "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "dev": true - }, - "node_modules/@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "dependencies": { - "@types/node": "*" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "node_modules/@jest/transform/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, "dependencies": { - "@types/express": "*" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "node_modules/@jest/transform/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, "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/@jest/transform/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 }, - "node_modules/@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", + "node_modules/@jest/transform/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, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==", + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz", - "integrity": "sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==", + "node_modules/@jest/transform/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, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/type-utils": "5.12.0", - "@typescript-eslint/utils": "5.12.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz", - "integrity": "sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==", + "node_modules/@jest/types/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, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", - "debug": "^4.3.2" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz", - "integrity": "sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==", + "node_modules/@jest/types/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, "dependencies": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz", - "integrity": "sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==", + "node_modules/@jest/types/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, "dependencies": { - "@typescript-eslint/utils": "5.12.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz", - "integrity": "sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==", + "node_modules/@jest/types/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 + }, + "node_modules/@jest/types/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, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz", - "integrity": "sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==", + "node_modules/@jest/types/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, "dependencies": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" + } + }, + "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==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">= 8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "node_modules/@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", @@ -1345,1424 +1553,1660 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==", + "node_modules/@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz", - "integrity": "sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.12.0", - "eslint-visitor-keys": "^3.0.0" + "lru-cache": "^6.0.0" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=10" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "peer": true + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, - "peer": true + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true, - "peer": true + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "infer-owner": "^1.0.4" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "node_modules/@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", "dev": true, - "peer": true + "dependencies": { + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "peer": true, + "node_modules/@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "engines": { + "node": ">=6" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, - "peer": true, "dependencies": { - "@xtuc/long": "4.2.2" + "type-detect": "4.0.8" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "peer": true + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "node_modules/@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + }, + "node_modules/@supabase/functions-js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.2.tgz", + "integrity": "sha512-97b2pdrCW4C4khFjotPRlXXs+oPmlbNZbMuR76nGyuNVSbNZ8tsIMYbfUdi4m61vqSUkRk+vieKaeNHMDsPN2A==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "cross-fetch": "^3.1.5" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "node_modules/@supabase/gotrue-js": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.11.tgz", + "integrity": "sha512-v6i6LVIvPIb4xP77x7IEbrffyOZkbcDKb/F3nHQ4xguP0izMyxNZqLQmIAYqgTNPUP7JIF666oCkp8y+j0oa7w==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "cross-fetch": "^3.0.6" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "node_modules/@supabase/postgrest-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.2.tgz", + "integrity": "sha512-3Dgx5k3RvtKqc8DvR2BEyh2fVyjZe5P4e0zD1r8dyuVmpaYDaASZ2YeNVgyWXMCWH7xzrj4vepTYlKwfj78QLg==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "cross-fetch": "^3.0.6" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "node_modules/@supabase/realtime-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.5.1.tgz", + "integrity": "sha512-V++liKGhaeE2CcMMolC5GWO1Qr7vAMRt0xso7xK8gIt0LMjgHKhlmkbMMgixSdbgfYu1OR3qIILfudKEqnUY+g==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@types/phoenix": "^1.5.4", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0", + "websocket": "^1.0.34" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "node_modules/@supabase/storage-js": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.5.tgz", + "integrity": "sha512-Tz1Gqx5/sJFILFmIdeJQAyiSxnjpLUlidYyKzNSRTyLTnqsxngkB0JnXinIBfUnbqXlCTnRnxbH5B5EnDrHl/w==", "dev": true, - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "cross-fetch": "^3.1.0" } }, - "node_modules/@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "node_modules/@supabase/supabase-js": { + "version": "1.33.2", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.2.tgz", + "integrity": "sha512-OAsvCw4C5L5E+VGwz5ZMm+NAO6BYmMMdVlc6ER6wbb5It8yfaE78HrffeBW5z+gXNkF4bi45O9LH6B/GqS0CdA==", "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "dependencies": { + "@supabase/functions-js": "^1.3.2", + "@supabase/gotrue-js": "^1.22.10", + "@supabase/postgrest-js": "^0.37.2", + "@supabase/realtime-js": "^1.4.5", + "@supabase/storage-js": "^1.6.5" } }, - "node_modules/@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", - "dev": true, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", "dependencies": { - "envinfo": "^7.7.3" + "tiny-glob": "^0.2.9" + } + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.303", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.303.tgz", + "integrity": "sha512-WdxDc8OiF1WEd/bEza7CBdzA+3qIcCi1GKBj/gieKX9I3N8iDJt/Cg2POrLo9wQoJ47nZcAd1eOhfr7XEX1aIQ==", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.8.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=14.13" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "svelte": "^3.44.0" } }, - "node_modules/@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.40", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.40.tgz", + "integrity": "sha512-DtXF01fYGEJkbC7GntU/7jaq9M1SwyyNCkbDA+cfQSXRpm3H7zbu0M80wSQBSpntdd+hgSdxKCxv4GgX6/zI6w==", + "dependencies": { + "@rollup/pluginutils": "^4.2.0", + "debug": "^4.3.3", + "kleur": "^4.1.4", + "magic-string": "^0.26.1", + "svelte-hmr": "^0.14.11" + }, + "engines": { + "node": "^14.13.1 || >= 16" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^2.7.0" }, "peerDependenciesMeta": { - "webpack-dev-server": { + "diff-match-patch": { "optional": true } } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true - }, - "node_modules/@zerodevx/svelte-toast": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.0.tgz", - "integrity": "sha512-Xvpy1dTE/bUcYJKrbBxc5KuXtbwhyUjEzmTNtg92bS558SvsH6FDu02pgFbBWNjK9g9f2eQCDBhBhJM4q6vhDw==" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "defer-to-connect": "^1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">= 6" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", + "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", "dev": true, - "peer": true, + "dependencies": { + "@babel/core": "7.13.10", + "@babel/generator": "7.13.9", + "@babel/parser": "7.14.6", + "@babel/traverse": "7.13.0", + "@babel/types": "7.13.0", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.21" + }, "peerDependencies": { - "acorn": "^8" + "prettier": "2.x" } }, - "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==", + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" + "@babel/types": "^7.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@babel/types": "^7.3.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==", + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, "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" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", "dev": true, "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "@types/node": "*" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@types/node": "*" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, + "peer": true, "dependencies": { - "string-width": "^4.1.0" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" + "peer": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "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==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "@types/node": "*" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, - "node_modules/are-we-there-yet": { + "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "@types/istanbul-lib-coverage": "*" } }, - "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==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } + "node_modules/@types/phoenix": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", + "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==", + "dev": true }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "node_modules/@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true }, - "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==" + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true }, - "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dev": true, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" + "@types/node": "*" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "@types/express": "*" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "@types/node": "*" } }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz", + "integrity": "sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/type-utils": "5.17.0", + "@typescript-eslint/utils": "5.17.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/boxen/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==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.17.0.tgz", + "integrity": "sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", + "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/boxen/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==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz", + "integrity": "sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/utils": "5.17.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/boxen/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 - }, - "node_modules/boxen/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==", + "node_modules/@typescript-eslint/types": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", + "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/boxen/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==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", + "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@typescript-eslint/utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", + "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", - "devOptional": true, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", + "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" + "@typescript-eslint/types": "5.17.0", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "engines": { - "node": "*" + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true }, - "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "devOptional": true, - "hasInstallScript": true, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "engines": { - "node": ">= 0.8" + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, + "peer": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, + "peer": true, "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" + "@xtuc/long": "4.2.2" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, + "peer": true, "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", - "devOptional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "envinfo": "^7.7.3" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "webpack-cli": "4.x.x" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true } - ], - "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" - }, - "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==", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "node_modules/@zerodevx/svelte-toast": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.1.tgz", + "integrity": "sha512-JxyjPlpc3IzwyHLGbU5pDPW68HM1o7FjiSWmm9SIig7NuuBFIqoJkVt9CYr6toAXzi5sLBgu27hT1NntKbKcmA==" + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, - "peer": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=6.0" + "node": ">=0.4.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } }, - "node_modules/cint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", - "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", - "dev": true + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "dependencies": { - "colors": "1.0.3" + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" }, "engines": { - "node": ">= 0.2.0" + "node": ">= 8.0.0" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "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, "dependencies": { - "mimic-response": "^1.0.0" + "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/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "devOptional": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, - "bin": { - "color-support": "bin.js" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "engines": { - "node": ">=0.1.90" + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/commander": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", - "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, - "engines": { - "node": "^12.20.0 || >=14" + "dependencies": { + "string-width": "^4.1.0" } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "color-convert": "^1.9.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dependencies": { - "ms": "2.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/compression/node_modules/ms": { + "node_modules/aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "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 + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "node_modules/babel-jest/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "devOptional": true, + "node_modules/babel-jest/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, "dependencies": { - "safe-buffer": "~5.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/babel-jest/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.6" + "node": ">=7.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "node_modules/babel-jest/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 }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "node_modules/babel-jest/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, + "engines": { + "node": ">=8" + } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/babel-jest/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, "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=8" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "dependencies": { - "node-fetch": "2.6.7" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/d": { + "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=6.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "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==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.8" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">= 0.8" } }, - "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 + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "execa": "^5.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/boxen/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, "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "engines": { "node": ">=10" }, @@ -2770,993 +3214,967 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "node_modules/boxen/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "node_modules/boxen/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "node_modules/boxen/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 }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/boxen/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, - "dependencies": { - "path-type": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "node_modules/boxen/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, "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "node_modules/boxen/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, - "dependencies": { - "buffer-indexof": "^1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, + "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==", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "is-obj": "^2.0.0" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz", - "integrity": "sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==", - "devOptional": true - }, - "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==", + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">= 0.8" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, "dependencies": { - "iconv-lite": "^0.6.2" + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { - "once": "^1.4.0" + "node-int64": "^0.4.0" } }, - "node_modules/engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", - "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" } }, - "node_modules/engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "devOptional": true, + "hasInstallScript": true, "dependencies": { - "@socket.io/base64-arraybuffer": "~1.0.2" + "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=6.14.2" } }, - "node_modules/enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "node_modules/builtins": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", + "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", "dev": true, - "peer": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "node_modules/cacache": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", + "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^1.1.2", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^7.2.0", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">=4" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", "dev": true, - "peer": true + "engines": { + "node": ">=12" + } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz", - "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "pump": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" }, - "optionalDependencies": { - "esbuild-android-arm64": "0.14.23", - "esbuild-darwin-64": "0.14.23", - "esbuild-darwin-arm64": "0.14.23", - "esbuild-freebsd-64": "0.14.23", - "esbuild-freebsd-arm64": "0.14.23", - "esbuild-linux-32": "0.14.23", - "esbuild-linux-64": "0.14.23", - "esbuild-linux-arm": "0.14.23", - "esbuild-linux-arm64": "0.14.23", - "esbuild-linux-mips64le": "0.14.23", - "esbuild-linux-ppc64le": "0.14.23", - "esbuild-linux-riscv64": "0.14.23", - "esbuild-linux-s390x": "0.14.23", - "esbuild-netbsd-64": "0.14.23", - "esbuild-openbsd-64": "0.14.23", - "esbuild-sunos-64": "0.14.23", - "esbuild-windows-32": "0.14.23", - "esbuild-windows-64": "0.14.23", - "esbuild-windows-arm64": "0.14.23" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz", - "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz", - "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz", - "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz", - "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz", - "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/caniuse-lite": { + "version": "1.0.30001323", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz", + "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/esbuild-linux-32": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz", - "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz", - "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } ], + "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": ">=12" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz", - "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz", - "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz", - "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, "engines": { - "node": ">=12" + "node": ">=6.0" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz", - "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/cint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz", - "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz", - "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz", - "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, "engines": { - "node": ">=12" + "node": ">= 0.2.0" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz", - "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz", - "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-windows-32": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz", - "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" } }, - "node_modules/esbuild-windows-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz", - "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, "engines": { - "node": ">=12" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz", - "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "devOptional": true, - "engines": { - "node": ">=6" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "engines": { - "node": ">=8" + "bin": { + "color-support": "bin.js" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "devOptional": true, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.1.90" } }, - "node_modules/eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "delayed-stream": "~1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 0.8" } }, - "node_modules/eslint-config-prettier": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz", - "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==", + "node_modules/commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": "^12.20.0 || >=14" } }, - "node_modules/eslint-plugin-svelte3": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.0.tgz", - "integrity": "sha512-MIQUTuRv3o7LyQ+360qOc9mLT35j1I5YzHr04g/UDcvJTpg0X/kHWELY99ve869Rp/9wjqD7I26Aq5H8OH5RIg==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "mime-db": ">= 1.43.0 < 2" }, - "peerDependencies": { - "eslint": ">=6.0.0", - "svelte": "^3.2.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.8.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "ms": "2.0.0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=0.8" } }, - "node_modules/eslint/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==", + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/eslint/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==", + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.6" } }, - "node_modules/eslint/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 + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } }, - "node_modules/eslint/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==", + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "node-fetch": "2.6.7" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "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, "dependencies": { - "type-fest": "^0.20.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/eslint/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==", + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/eslint/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==", + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "cssom": "~0.3.6" }, "engines": { "node": ">=8" } }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/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, - "engines": { - "node": ">=4.0" + "node": ">=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, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "estraverse": "^5.2.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=4.0.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "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 }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 10" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "peer": true, "engines": { - "node": ">=0.8.x" + "node": ">=8" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "object-keys": "^1.0.12" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, @@ -3764,1025 +4182,1034 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, "engines": { - "node": ">= 0.10.0" + "node": ">=0.4.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true, - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "engines": { + "node": ">=8" + } }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "type": "^2.5.0" + "engines": { + "node": ">=8" } }, - "node_modules/ext/node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "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 + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "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==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "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 - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", "dev": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, "dependencies": { - "reusify": "^1.0.4" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "dev": true, "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" + "buffer-indexof": "^1.0.0" } }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "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==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "esutils": "^2.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.0.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "webidl-conversions": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "ms": "2.0.0" + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "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==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.103", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", + "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", + "devOptional": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "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 + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.8" } }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } }, - "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "engines": { - "node": ">=4.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "debug": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, + "node_modules/engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "dependencies": { + "@socket.io/base64-arraybuffer": "~1.0.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=10.0.0" } }, - "node_modules/fp-and-or": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", - "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10.13.0" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=4" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, - "node_modules/gauge": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz", - "integrity": "sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "is-arrayish": "^0.2.1" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/es5-ext": { + "version": "0.10.59", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.59.tgz", + "integrity": "sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "node_modules/esbuild": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.29.tgz", + "integrity": "sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": "*" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "esbuild-android-64": "0.14.29", + "esbuild-android-arm64": "0.14.29", + "esbuild-darwin-64": "0.14.29", + "esbuild-darwin-arm64": "0.14.29", + "esbuild-freebsd-64": "0.14.29", + "esbuild-freebsd-arm64": "0.14.29", + "esbuild-linux-32": "0.14.29", + "esbuild-linux-64": "0.14.29", + "esbuild-linux-arm": "0.14.29", + "esbuild-linux-arm64": "0.14.29", + "esbuild-linux-mips64le": "0.14.29", + "esbuild-linux-ppc64le": "0.14.29", + "esbuild-linux-riscv64": "0.14.29", + "esbuild-linux-s390x": "0.14.29", + "esbuild-netbsd-64": "0.14.29", + "esbuild-openbsd-64": "0.14.29", + "esbuild-sunos-64": "0.14.29", + "esbuild-windows-32": "0.14.29", + "esbuild-windows-64": "0.14.29", + "esbuild-windows-arm64": "0.14.29" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz", + "integrity": "sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "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, - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz", + "integrity": "sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true - }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz", + "integrity": "sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz", + "integrity": "sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz", + "integrity": "sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz", + "integrity": "sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, + "node_modules/esbuild-linux-32": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz", + "integrity": "sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.6" + "node": ">=12" } }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "node_modules/esbuild-linux-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz", + "integrity": "sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4.0" + "node": ">=12" } }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true, + "node_modules/esbuild-linux-arm": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz", + "integrity": "sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz", + "integrity": "sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz", + "integrity": "sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz", + "integrity": "sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz", + "integrity": "sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "node_modules/esbuild-linux-s390x": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz", + "integrity": "sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node_modules/esbuild-netbsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz", + "integrity": "sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "node_modules/esbuild-openbsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz", + "integrity": "sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", - "dev": true + "node_modules/esbuild-sunos-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz", + "integrity": "sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "node_modules/esbuild-windows-32": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz", + "integrity": "sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true + "node_modules/esbuild-windows-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz", + "integrity": "sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/esbuild-windows-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz", + "integrity": "sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=8.0.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/escodegen/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, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=4.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": ">= 0.8.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">= 0.8.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", - "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "prelude-ls": "~1.1.2" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "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==", + "node_modules/eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, - "engines": { - "node": ">=4" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, "engines": { - "node": ">=8" + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": ">=6.0.0", + "svelte": "^3.2.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=0.8.19" + "node": ">=8.0.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { - "node": ">= 10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "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==", + "node_modules/eslint/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, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/eslint/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, "dependencies": { - "binary-extensions": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/eslint/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, "dependencies": { - "ci-info": "^2.0.0" + "color-name": "~1.1.4" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dependencies": { - "has": "^1.0.3" + "node_modules/eslint/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 + }, + "node_modules/eslint/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, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/eslint/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, - "bin": { - "is-docker": "cli.js" + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -4791,43 +5218,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", + "node_modules/eslint/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, "engines": { "node": ">=8" } }, - "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==", + "node_modules/eslint/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, "dependencies": { - "is-extglob": "^2.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/eslint/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, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, "engines": { "node": ">=10" }, @@ -4835,4225 +5251,4332 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "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==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "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==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/esquery/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, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "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, "dependencies": { - "isobject": "^3.0.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "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==", + "node_modules/esrecurse/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, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "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, - "dependencies": { - "is-docker": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { - "@types/node": "*", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-worker/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==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, - "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==", - "devOptional": true - }, - "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==", + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "peer": true + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "dev": true, "dependencies": { - "jju": "^1.1.0" + "type": "^2.5.0" } }, - "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 - }, - "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", "dev": true }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, + "node_modules/fast-check": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.24.0.tgz", + "integrity": "sha512-iNXbN90lbabaCUfnW5jyXYPwMJLFYl09eJDkXA9ZoidFlBK63gNRvcKxv+8D1OJ1kIYjwBef4bO/K3qesUeWLQ==", + "dev": true, "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" + "pure-rand": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } }, - "node_modules/jsonlines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", - "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw=", + "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 }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, + "@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": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" + "reusify": "^1.0.4" } }, - "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==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.8.0" } }, - "node_modules/libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, "dependencies": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" + "bser": "2.1.1" } }, - "node_modules/libnpmconfig/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "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, "dependencies": { - "locate-path": "^3.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=6" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/libnpmconfig/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/libnpmconfig/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/libnpmconfig/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" + "ms": "2.0.0" } }, - "node_modules/libnpmconfig/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6.11.5" + "node": ">=8" } }, - "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==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true - }, - "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==", + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=0.10.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" + "node": ">= 6" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "node_modules/fp-and-or": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", + "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true, "engines": { "node": ">= 0.6" } }, - "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "fs-monkey": "1.0.3" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 4.0.0" + "node": ">= 8" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", "dev": true }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/micromatch": { + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=8.6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">= 0.6" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { - "brace-expansion": "^1.1.7" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "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, "dependencies": { - "yallist": "^4.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } + "peer": true }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "ini": "2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true, + "engines": { + "node": ">=4" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "pump": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4.0" } }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true, "engines": { "node": ">=4" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "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, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "engines": { + "node": ">= 0.4" }, - "bin": { - "multicast-dns": "cli.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "peer": true - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "whatwg-url": "^5.0.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=10" } }, - "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, - "engines": { - "node": ">= 6.13.0" + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "devOptional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "whatwg-encoding": "^1.0.5" }, "engines": { "node": ">=10" } }, - "node_modules/node-releases": { + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "devOptional": true + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "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==", + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "engines": { + "node": ">=10.17.0" } }, - "node_modules/npm-check-updates": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.3.1.tgz", - "integrity": "sha512-rvXyiUnc9zw3WXakqv0LsdFDc1V4T8DHG8AdWEjJiqfOZdBI4q8ekTt/BFqLQAtcXo5Pu6WGqjA9oDnFi4UV3g==", + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, "dependencies": { - "chalk": "^4.1.2", - "cint": "^8.2.1", - "cli-table": "^0.3.11", - "commander": "^9.0.0", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.3", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^4.1.0", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "libnpmconfig": "^1.2.1", - "lodash": "^4.17.21", - "minimatch": "^5.0.0", - "p-map": "^4.0.0", - "pacote": "^13.0.2", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts": "^2.4.2", - "rc-config-loader": "^4.0.0", - "remote-git-tags": "^3.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0", - "yaml": "^1.10.2" - }, - "bin": { - "ncu": "build/src/bin/cli.js", - "npm-check-updates": "build/src/bin/cli.js" - }, - "engines": { - "node": ">=12" + "ms": "^2.0.0" } }, - "node_modules/npm-check-updates/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==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/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==", + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">= 4" } }, - "node_modules/npm-check-updates/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "minimatch": "^3.0.4" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-check-updates/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, + "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==", "dependencies": { - "color-name": "~1.1.4" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/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 - }, - "node_modules/npm-check-updates/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==", + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.0.tgz", - "integrity": "sha512-EU+GCVjXD00yOUf1TwAHVP7v3fBD3A8RkkPYsWWKGWesxM/572sL53wJQnHxquHlRhYUV36wHkqrN8cdikKc2g==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=0.8.19" } }, - "node_modules/npm-check-updates/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==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": ">=10" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">= 0.10" } }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "node_modules/npm-package-arg": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.0.tgz", - "integrity": "sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q==", + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, - "dependencies": { - "hosted-git-info": "^4.1.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 10" } }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "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, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-packlist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", - "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", - "dev": true, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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==", "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm-pick-manifest": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", - "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "ci-info": "^2.0.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "has": "^1.0.3" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-registry-fetch": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.0.tgz", - "integrity": "sha512-MmiMuV9DU5gRuAU0jia952Qq+E4h7ZoUaeltCXivhClcqfOVKqNLZEQsRUOb6a8WQY+um8x97JcUuaWFoPoBBw==", + "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, "dependencies": { - "make-fetch-happen": "^10.0.2", - "minipass": "^3.1.6", - "minipass-fetch": "^1.4.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz", - "integrity": "sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw==", + "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, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz", - "integrity": "sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.0", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.3.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.4.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=6" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "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==", "dependencies": { - "path-key": "^3.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "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==", "engines": { - "node": ">= 0.4" + "node": ">=0.12.0" } }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" + "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, + "engines": { + "node": ">=8" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "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.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, - "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==", + "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, "dependencies": { - "yocto-queue": "^0.1.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" + "is-docker": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { "node": ">=8" } }, - "node_modules/pacote": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.2.tgz", - "integrity": "sha512-3LyfvDk2BSJNFQZIcDqnLNa7IsYb6KwX3H9uZPwaHJFIX6Gv5N9QHU+s7mEs/RbN4/ta6KUT39LAi2l6EkBi5A==", + "node_modules/istanbul-lib-instrument/node_modules/@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^2.0.0", - "cacache": "^15.3.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - }, "bin": { - "pacote": "lib/bin.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=6.0.0" } }, - "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==", + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, "dependencies": { - "callsites": "^3.0.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "node_modules/istanbul-lib-report/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, - "bin": { - "parse-github-url": "cli.js" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/istanbul-lib-report/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "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==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "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==", + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "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==" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/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, "dependencies": { - "p-locate": "^4.1.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/jest-circus/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, "dependencies": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/jest-circus/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, "dependencies": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "node_modules/jest-circus/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 + }, + "node_modules/jest-circus/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, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, "engines": { - "node": ">= 0.12.0" + "node": ">=8" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/jest-circus/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, "dependencies": { - "ms": "^2.1.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" }, "bin": { - "mkdirp": "bin/cmd.js" + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/postcss": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", - "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "node_modules/jest-cli/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, "dependencies": { - "nanoid": "^3.2.0", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-cli/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "node_modules/jest-cli/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "node_modules/jest-cli/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 + }, + "node_modules/jest-cli/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, - "bin": { - "prettier": "bin-prettier.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/prettier-plugin-svelte": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", - "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", + "node_modules/jest-cli/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, - "peerDependencies": { - "prettier": "^1.16.4 || ^2.0.0", - "svelte": "^3.2.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/proc-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", - "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/jest-config/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/jest-config/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, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/jest-config/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, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/jest-config/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 }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/jest-config/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, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/jest-config/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "node_modules/jest-diff/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, "dependencies": { - "escape-goat": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "node_modules/jest-diff/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/jest-diff/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, - "peer": true, "dependencies": { - "safe-buffer": "^5.1.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/jest-diff/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 + }, + "node_modules/jest-diff/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, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "node_modules/jest-diff/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, "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">= 0.8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/jest-each/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, "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "color-convert": "^2.0.1" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/rc-config-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", - "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", + "node_modules/jest-each/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, "dependencies": { - "debug": "^4.1.1", - "js-yaml": "^4.0.0", - "json5": "^2.1.2", - "require-from-string": "^2.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/rc/node_modules/strip-json-comments": { + "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/read-package-json": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz", - "integrity": "sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw==", + "node_modules/jest-each/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 + }, + "node_modules/jest-each/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, - "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "node_modules/jest-each/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, "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { - "node": ">=8.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, "engines": { - "node": ">= 0.10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "node_modules/jest-jasmine2/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, "dependencies": { - "rc": "^1.2.8" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "node_modules/jest-jasmine2/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, "dependencies": { - "rc": "^1.2.8" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/remote-git-tags": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", - "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "node_modules/jest-jasmine2/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 + }, + "node_modules/jest-jasmine2/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, "engines": { "node": ">=8" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/jest-jasmine2/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/jest-matcher-utils/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-matcher-utils/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "node_modules/jest-matcher-utils/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, "dependencies": { - "lowercase-keys": "^1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "node_modules/jest-matcher-utils/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 + }, + "node_modules/jest-matcher-utils/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, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/jest-matcher-utils/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/rollup": { - "version": "2.67.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.3.tgz", - "integrity": "sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw==", - "bin": { - "rollup": "dist/bin/rollup" + "node_modules/jest-message-util/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, + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/jest-message-util/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, "dependencies": { - "queue-microtask": "^1.2.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "node_modules/jest-message-util/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, "dependencies": { - "mri": "^1.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "devOptional": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "node_modules/jest-message-util/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 }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" + "node_modules/jest-message-util/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, + "engines": { + "node": ">=8" } }, - "node_modules/sander/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/jest-message-util/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, "dependencies": { - "minimist": "^1.2.5" + "has-flag": "^4.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8" } }, - "node_modules/sander/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "@jest/types": "^27.5.1", + "@types/node": "*" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" + "node": ">=6" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "dependencies": { - "node-forge": "^1.2.0" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "node_modules/jest-resolve/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, "dependencies": { - "semver": "^6.3.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/semver-utils": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", - "dev": true - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "node_modules/jest-resolve/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, "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/jest-resolve/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, "dependencies": { - "ms": "2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/jest-resolve/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 }, - "node_modules/send/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 + "node_modules/jest-resolve/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, + "engines": { + "node": ">=8" + } }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/jest-resolve/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, - "peer": true, "dependencies": { - "randombytes": "^2.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/jest-runner/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, "dependencies": { - "ms": "2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "node_modules/jest-runner/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, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "node_modules/jest-runner/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/jest-runner/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 }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "node_modules/jest-runner/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, + "engines": { + "node": ">=8" + } }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "node_modules/jest-runner/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, "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, "dependencies": { - "kind-of": "^6.0.2" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "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==", + "node_modules/jest-runtime/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, "dependencies": { - "shebang-regex": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-runtime/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "node_modules/jest-runtime/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/jest-runtime/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 }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/jest-runtime/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, "engines": { "node": ">=8" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/jest-runtime/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/socket.io-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", - "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "backo2": "~1.0.2", - "debug": "~4.3.2", - "engine.io-client": "~6.1.1", - "parseuri": "0.0.6", - "socket.io-parser": "~4.1.1" + "@types/node": "*", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">=10.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/socket.io-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", - "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", - "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "debug": "~4.3.1" + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" }, "engines": { - "node": ">=10.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "node_modules/jest-snapshot/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, "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "node_modules/jest-snapshot/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, "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "node_modules/jest-snapshot/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, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 10" + "node": ">=7.0.0" } }, - "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "node_modules/jest-snapshot/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 + }, + "node_modules/jest-snapshot/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "lru-cache": "^6.0.0" }, "bin": { - "sorcery": "bin/index.js" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true, + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/jest-snapshot/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, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-util/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/spawn-please": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-1.0.0.tgz", - "integrity": "sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==", + "node_modules/jest-util/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, + "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/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/jest-util/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, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "node_modules/jest-util/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 }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/jest-util/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, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/jest-util/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, "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "node_modules/jest-validate/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, "dependencies": { - "minipass": "^3.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/jest-validate/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, "dependencies": { - "safe-buffer": "~5.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, - "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==", + "node_modules/jest-validate/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, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-name": "~1.1.4" }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/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 + }, + "node_modules/jest-validate/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, "engines": { "node": ">=8" } }, - "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==", + "node_modules/jest-validate/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, "dependencies": { - "ansi-regex": "^5.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/jest-watcher/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, "dependencies": { - "min-indent": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-watcher/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, + "node_modules/jest-watcher/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, "dependencies": { - "has-flag": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/jest-watcher/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 }, - "node_modules/svelte": { - "version": "3.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", - "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==", + "node_modules/jest-watcher/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, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/svelte-check": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.5.tgz", - "integrity": "sha512-nRft8BbG2wcxyCdHDZ7X43xLcvDzua3xLwq6wzHGcAF3ka3Jyhv2rvgq0+SF9NwHLMefp9C2XkM6etzsxK/cMQ==", + "node_modules/jest-watcher/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, "dependencies": { - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "minimist": "^1.2.5", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "source-map": "^0.7.3", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "bin": { - "svelte-check": "bin/svelte-check" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "svelte": "^3.24.0" - } - }, - "node_modules/svelte-check/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-hmr": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.9.tgz", - "integrity": "sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==", - "peerDependencies": { - "svelte": ">=3.19.0" + "node": ">=8" } }, - "node_modules/svelte-preprocess": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz", - "integrity": "sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==", - "hasInstallScript": true, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "dependencies": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 9.11.2" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0", - "svelte": "^3.23.0", - "typescript": "^3.9.5 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } + "node": ">= 10.13.0" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/jest-worker/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, - "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", + "dev": true + }, + "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==", + "devOptional": true + }, + "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, - "peer": true, "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" + "argparse": "^2.0.1" }, "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, - "peer": true, "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=10" }, "peerDependencies": { - "webpack": "^5.1.0" + "canvas": "^2.5.0" }, "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { + "canvas": { "optional": true } } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true, "peer": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", "dev": true, - "peer": true, - "engines": { - "node": ">= 8" + "dependencies": { + "jju": "^1.1.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "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 }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "devOptional": true, + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw=", + "dev": true + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true, - "engines": { - "node": ">=6" - } + "engines": [ + "node >= 0.2.0" + ] }, - "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==", + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "json-buffer": "3.0.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=0.10.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=6" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "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==", + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "package-json": "^6.3.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "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==", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "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, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8.0" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" } }, - "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" }, "engines": { - "node": ">=4.2.0" + "node": ">=6" } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "unique-slug": "^2.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/libnpmconfig/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "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 + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, + "peer": true, "engines": { - "node": ">= 0.8" + "node": ">=6.11.5" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "node": ">=8" } }, - "node_modules/update-notifier/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==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "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 + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dependencies": { + "sourcemap-codec": "^1.4.8" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=12" } }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/update-notifier/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==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", + "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "agentkeepalive": "^4.2.1", + "cacache": "^16.0.2", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/update-notifier/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 - }, - "node_modules/update-notifier/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==", + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/update-notifier/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==", + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "tmpl": "1.0.5" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/utf-8-validate": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", - "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", - "devOptional": true, - "hasInstallScript": true, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, "dependencies": { - "node-gyp-build": "^4.3.0" + "fs-monkey": "1.0.3" }, "engines": { - "node": ">=6.14.2" + "node": ">= 4.0.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.6" } }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "bin": { - "uuid": "dist/bin/uuid" + "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "dependencies": { - "builtins": "^1.0.3" + "engines": { + "node": ">=6" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/vite": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz", - "integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==", - "dependencies": { - "esbuild": "^0.14.14", - "postcss": "^8.4.6", - "resolve": "^1.22.0", - "rollup": "^2.59.0" - }, - "bin": { - "vite": "bin/vite.js" - }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "engines": { - "node": ">=12.2.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*" + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - } + "engines": { + "node": "*" } }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, - "peer": true, "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "dependencies": { - "minimalistic-assert": "^1.0.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/webpack": { - "version": "5.69.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", - "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "node_modules/minipass-fetch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, - "peer": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" + "minipass": "^3.0.0" }, "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "engines": { - "node": ">= 10" + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=8" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "minipass": "^3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 8" } }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=10" } }, - "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": "*" } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" } }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" }, - "peerDependencies": { - "ajv": "^8.8.2" + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "bin": { + "nanoid": "bin/nanoid.cjs" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 0.6" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "peer": true }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { - "node": ">=10.0.0" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { + "encoding": { "optional": true } } }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "peer": true, "engines": { - "node": ">=10.13.0" + "node": ">= 6.13.0" } }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "node_modules/node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", "dev": true, "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=4.0.0" + "node": "^12.22 || ^14.13 || >=16" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "devOptional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "devOptional": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/normalize-package-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", + "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", "dev": true, "dependencies": { - "ms": "2.0.0" + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/whatwg-url": { + "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/normalize-package-data/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "node-which": "bin/node-which" + "semver": "bin/semver.js" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "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==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" } }, - "node_modules/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==", + "node_modules/npm-check-updates": { + "version": "12.5.4", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.4.tgz", + "integrity": "sha512-4+27zaTdieWgvPLaCZ/A6Q2WC1cYVcrc2SqVmLFYgkWBrKw1QkwpeV16FSvkFGZr3OdFyr7Dpjw8JRn4H2QxFw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "chalk": "^4.1.2", + "cint": "^8.2.1", + "cli-table": "^0.3.11", + "commander": "^9.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "libnpmconfig": "^1.2.1", + "lodash": "^4.17.21", + "minimatch": "^5.0.1", + "p-map": "^4.0.0", + "pacote": "^13.0.3", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts": "^2.4.2", + "rc-config-loader": "^4.0.0", + "remote-git-tags": "^3.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^1.0.0", + "update-notifier": "^5.1.0", + "yaml": "^1.10.2" }, - "engines": { - "node": ">=10" + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "engines": { + "node": ">=12" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { + "node_modules/npm-check-updates/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==", @@ -9068,7 +9591,32 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { + "node_modules/npm-check-updates/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-check-updates/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, + "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/npm-check-updates/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==", @@ -9080,3880 +9628,10122 @@ "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { + "node_modules/npm-check-updates/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 }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/npm-check-updates/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, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xdg-basedir": { + "node_modules/npm-check-updates/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "node_modules/npm-check-updates/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, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.32" + "node": ">=10" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/npm-check-updates/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, - "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==", + "node_modules/npm-check-updates/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, + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "devOptional": true, - "requires": { - "@babel/highlight": "^7.16.7" - } }, - "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", - "devOptional": true - }, - "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "node_modules/npm-check-updates/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "devOptional": true, - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "node_modules/npm-check-updates/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "devOptional": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" } }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "devOptional": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", + "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", + "dev": true, "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "hosted-git-info": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "node_modules/npm-package-arg/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true, + "engines": { + "node": ">=12" } }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "devOptional": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, + "node_modules/npm-packlist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-4.0.0.tgz", + "integrity": "sha512-gL6XC/iw9YSmqArmZOGSkyy+yIZf2f7uH0p4Vmxef/irn73vd9/rDkCtvm+a9rh/QK2xGYfCAMOghM06ymzC0A==", + "dev": true, "dependencies": { - "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", - "devOptional": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", - "devOptional": true - }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "glob": "^7.2.0", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, + "node_modules/npm-pick-manifest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", + "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "dev": true, "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "devOptional": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "devOptional": true - }, - "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", - "devOptional": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "node_modules/npm-registry-fetch": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", + "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { - "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", - "devOptional": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", - "devOptional": true - }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "node_modules/npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "@babel/parser": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", - "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", - "devOptional": true + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "dependencies": { - "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", - "devOptional": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "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, + "engines": { + "node": ">= 0.4" } }, - "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, - "@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, "dependencies": { - "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "engines": { + "node": ">= 0.8" } }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@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==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" } }, - "@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==" - }, - "@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==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@npmcli/git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", - "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, "dependencies": { - "lru-cache": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz", - "integrity": "sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - } + "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.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "engines": { + "node": ">=6" } }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { - "infer-owner": "^1.0.4" + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@npmcli/run-script": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", - "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^8.2.0", - "read-package-json-fast": "^2.0.1" - } - }, - "@rollup/pluginutils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", - "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" - }, - "@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" - }, - "@supabase/gotrue-js": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.3.tgz", - "integrity": "sha512-w8PYtC23AQpPwwXDyd/YvEfp6O9a5Q50CGhFWNvnc6W82FayQluuJcpZ05K0rQktNvZzYxOkgOAFOm/+dvwrPQ==", - "requires": { - "cross-fetch": "^3.0.6" + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@supabase/postgrest-js": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.36.0.tgz", - "integrity": "sha512-KOnhVy8tEr/qNnvOLpFqwOkt7ilRDFMXY+JJfmLjS3+eZuna1G57w4zb3L0SdY6BL7AKnfzP5BG3yHTAuJPSww==", + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, - "requires": { - "cross-fetch": "^3.0.6" + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" } }, - "@supabase/realtime-js": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.3.6.tgz", - "integrity": "sha512-nkQv9A3Z6PgXl32rrQT+mG0oICSpTCTbjChh43GfSIaXXSZ10u5wMzaNqtp4jpqpyjwd8Zr2bDgwAo986T+xyw==", + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "requires": { - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" + "engines": { + "node": ">= 4" } }, - "@supabase/storage-js": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.1.tgz", - "integrity": "sha512-0U+yleWmEGd2JynngUpQk/43H/PkNcampGDXcKxj/J+CpAduzdU0Qx9YpL7+a74Q0IeBv4AZUGUA+uxams9XVA==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "requires": { - "cross-fetch": "^3.1.0" + "engines": { + "node": ">=6" } }, - "@supabase/supabase-js": { - "version": "1.30.4", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.30.4.tgz", - "integrity": "sha512-ThBjmQGw0ZD0C7IxOdISCrRMTr1VpcjHI8hqENw61K5Uz0iqWK58HQOHFNkTRAhnrzReLI/pm2O3ifIch30cJQ==", + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dev": true, - "requires": { - "@supabase/gotrue-js": "^1.22.1", - "@supabase/postgrest-js": "^0.36.0", - "@supabase/realtime-js": "^1.3.6", - "@supabase/storage-js": "^1.6.0" + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" } }, - "@sveltejs/adapter-static": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.28.tgz", - "integrity": "sha512-c4xLyeSwnbGQxe4f1SLpHTbxZDm3TEr43scR3tOlVgQN+mnAL9aDdl3nTtdzWmrUDmDEmY4GriAwLyFLZuINLw==", - "requires": { - "tiny-glob": "^0.2.9" + "node_modules/pacote": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.5.tgz", + "integrity": "sha512-6CYfot3/rUAn3qqzF2d/jrrXm5HlBtvaSgfmg0VtOUAdJ8fbSq21BJwftMGArkL71yXHIbUJ7Bt5B04547HELA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^3.0.1", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^4.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "@sveltejs/kit": { - "version": "1.0.0-next.278", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.278.tgz", - "integrity": "sha512-WT93Wnu05X9WG9BMMk/dj0gy6R7iXm9aXRDVgmIl9z8jT2ukejgmkhi5IwBYrK0OMIUALRVfukn+iy+srPc91Q==", - "requires": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", - "sade": "^1.7.4", - "vite": "^2.8.0" + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.37", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.37.tgz", - "integrity": "sha512-EdSXw2rXeOahNrQfMJVZxa/NxZxW1a0TiBI3s+pVxnxU14hEQtnkLtdbTFhnceu22gJpNPFSIJRcIwRBBDQIeA==", - "requires": { - "@rollup/pluginutils": "^4.1.2", - "debug": "^4.3.3", - "kleur": "^4.1.4", - "magic-string": "^0.25.7", - "svelte-hmr": "^0.14.9" + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "@trivago/prettier-plugin-sort-imports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", - "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", - "dev": true, - "requires": { - "@babel/core": "7.13.10", - "@babel/generator": "7.13.9", - "@babel/parser": "7.14.6", - "@babel/traverse": "7.13.0", - "@babel/types": "7.13.0", - "javascript-natural-sort": "0.7.1", - "lodash": "4.17.21" - } + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" + "engines": { + "node": ">= 0.8" } }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "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, - "requires": { - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" } }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "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, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "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==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "peer": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" + "engines": { + "node": ">=8" } }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "peer": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "peer": true + "engines": { + "node": ">= 6" + } }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" } }, - "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "ms": "^2.1.1" } }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", - "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==" - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "dev": true + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "requires": { - "@types/node": "*" + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "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, - "requires": { - "@types/express": "*" + "engines": { + "node": ">= 0.8.0" } }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" + "engines": { + "node": ">=4" } }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "node_modules/prettier": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", "dev": true, - "requires": { - "@types/node": "*" + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", + "node_modules/prettier-plugin-svelte": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", + "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", "dev": true, - "requires": { - "@types/node": "*" + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0" } }, - "@types/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==", + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@typescript-eslint/eslint-plugin": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz", - "integrity": "sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/type-utils": "5.12.0", - "@typescript-eslint/utils": "5.12.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "engines": { + "node": ">=10" }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@typescript-eslint/parser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz", - "integrity": "sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==", + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", - "debug": "^4.3.2" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "@typescript-eslint/scope-manager": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz", - "integrity": "sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0" - } + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, - "@typescript-eslint/type-utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz", - "integrity": "sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "requires": { - "@typescript-eslint/utils": "5.12.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" + "engines": { + "node": ">=0.4.0" } }, - "@typescript-eslint/types": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz", - "integrity": "sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==", + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "@typescript-eslint/typescript-estree": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz", - "integrity": "sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==", + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "requires": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" } }, - "@typescript-eslint/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "@typescript-eslint/visitor-keys": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz", - "integrity": "sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==", + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "requires": { - "@typescript-eslint/types": "5.12.0", - "eslint-visitor-keys": "^3.0.0" + "engines": { + "node": ">=6" } }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, - "peer": true + "engines": { + "node": ">= 0.10" + } }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true, - "peer": true + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "peer": true + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "engines": { + "node": ">=6" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "dev": true, - "peer": true + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "node_modules/pure-rand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.1.tgz", + "integrity": "sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "dev": true, - "peer": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "peer": true, - "requires": { - "@xtuc/long": "4.2.2" + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "peer": true + "engines": { + "node": ">= 0.6" + } }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "engines": { + "node": ">= 0.8" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "node_modules/rc-config-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", + "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "dependencies": { + "debug": "^4.1.1", + "js-yaml": "^4.0.0", + "json5": "^2.1.2", + "require-from-string": "^2.0.2" } }, - "@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, - "requires": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=0.10.0" } }, - "@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true, - "requires": {} + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "node_modules/read-package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", + "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", "dev": true, - "peer": true + "dependencies": { + "glob": "^7.2.0", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "peer": true - }, - "@zerodevx/svelte-toast": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.0.tgz", - "integrity": "sha512-Xvpy1dTE/bUcYJKrbBxc5KuXtbwhyUjEzmTNtg92bS558SvsH6FDu02pgFbBWNjK9g9f2eQCDBhBhJM4q6vhDw==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, - "peer": true, - "requires": {} + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", "dev": true, - "requires": {} + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "requires": { - "debug": "4" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": ">=8" } }, - "ajv-formats": { + "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "requires": { - "string-width": "^4.1.0" + "engines": { + "node": ">=0.10.0" } }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "are-we-there-yet": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "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 - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "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==", + "engines": { + "node": ">=4" + } }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true, - "requires": { - "lodash": "^4.17.14" + "engines": { + "node": ">=10" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "balanced-match": { + "node_modules/responselike": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "lowercase-keys": "^1.0.0" } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "engines": { + "node": ">= 4" } }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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==", "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", - "devOptional": true, - "requires": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "devOptional": true, - "requires": { - "node-gyp-build": "^4.3.0" + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" } }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true + "node_modules/sander/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" } }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, + "peer": true, "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { + "node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", - "devOptional": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "devOptional": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "bin": { + "semver": "bin/semver.js" } }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", "dev": true }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, - "peer": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "cint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", - "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", - "dev": true + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/send/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 }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "requires": { - "colors": "1.0.3" + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" } }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { - "mimic-response": "^1.0.0" + "dependencies": { + "ms": "2.0.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, - "requires": { - "color-name": "1.1.3" + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "devOptional": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - }, - "commander": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", - "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "devOptional": true, - "requires": { - "safe-buffer": "~5.1.1" + "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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "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, + "engines": { + "node": ">=8" + } }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" + "engines": { + "node": ">=8" } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node_modules/socket.io-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", + "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "backo2": "~1.0.2", + "debug": "~4.3.2", + "engine.io-client": "~6.1.1", + "parseuri": "0.0.6", + "socket.io-parser": "~4.1.1" + }, + "engines": { + "node": ">=10.0.0" } }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" + "node_modules/socket.io-parser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", + "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, - "requires": { - "mimic-response": "^1.0.0" + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "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 - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", "dev": true, - "requires": { - "execa": "^5.0.0" + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" } }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "node_modules/spawn-please": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-1.0.0.tgz", + "integrity": "sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "dir-glob": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { - "path-type": "^4.0.0" + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "requires": { - "esutils": "^2.0.2" + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, - "requires": { - "is-obj": "^2.0.0" + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "electron-to-chromium": { - "version": "1.4.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz", - "integrity": "sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==", - "devOptional": true + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "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 + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "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, - "requires": { - "once": "^1.4.0" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", - "requires": { - "@socket.io/component-emitter": "~3.0.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", - "requires": { - "@socket.io/base64-arraybuffer": "~1.0.2" + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "engines": { + "node": ">=6" } }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "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, - "peer": true + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" } }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/supports-hyperlinks/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, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" + "engines": { + "node": ">=8" } }, - "esbuild": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz", - "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==", - "requires": { - "esbuild-android-arm64": "0.14.23", - "esbuild-darwin-64": "0.14.23", - "esbuild-darwin-arm64": "0.14.23", - "esbuild-freebsd-64": "0.14.23", - "esbuild-freebsd-arm64": "0.14.23", - "esbuild-linux-32": "0.14.23", - "esbuild-linux-64": "0.14.23", - "esbuild-linux-arm": "0.14.23", - "esbuild-linux-arm64": "0.14.23", - "esbuild-linux-mips64le": "0.14.23", - "esbuild-linux-ppc64le": "0.14.23", - "esbuild-linux-riscv64": "0.14.23", - "esbuild-linux-s390x": "0.14.23", - "esbuild-netbsd-64": "0.14.23", - "esbuild-openbsd-64": "0.14.23", - "esbuild-sunos-64": "0.14.23", - "esbuild-windows-32": "0.14.23", - "esbuild-windows-64": "0.14.23", - "esbuild-windows-arm64": "0.14.23" + "node_modules/supports-hyperlinks/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "esbuild-android-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz", - "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==", - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz", - "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==", - "optional": true + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "esbuild-darwin-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz", - "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==", - "optional": true + "node_modules/svelte": { + "version": "3.46.5", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.5.tgz", + "integrity": "sha512-T4txpIgYEGTkpFY2KQoqvtDmapu/suHMx0GN2zAImdJ7liEdG29P0XpjcNHnOEU1a4lLJn1WXxreobBSIGdcbQ==", + "engines": { + "node": ">= 8" + } }, - "esbuild-freebsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz", - "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==", - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz", - "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==", - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz", - "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==", - "optional": true + "node_modules/svelte-check": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.6.tgz", + "integrity": "sha512-luzdly7RJhyXucQe8ID/7CqDgXdMrPYXmyZBjCbp+cixzTopZotuWevrB5hWDOnOU19m2cyetigIIa7WDHnCmQ==", + "dependencies": { + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "minimist": "^1.2.5", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } }, - "esbuild-linux-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz", - "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==", - "optional": true + "node_modules/svelte-check/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } }, - "esbuild-linux-arm": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz", - "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==", - "optional": true + "node_modules/svelte-hmr": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } }, - "esbuild-linux-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz", - "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==", - "optional": true + "node_modules/svelte-preprocess": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", + "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } }, - "esbuild-linux-mips64le": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz", - "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==", - "optional": true + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } }, - "esbuild-linux-ppc64le": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz", - "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==", - "optional": true + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, - "esbuild-linux-riscv64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz", - "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==", - "optional": true + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } }, - "esbuild-linux-s390x": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz", - "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==", - "optional": true + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } }, - "esbuild-netbsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz", - "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==", - "optional": true + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "esbuild-openbsd-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz", - "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==", - "optional": true + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } }, - "esbuild-sunos-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz", - "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==", - "optional": true + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "peer": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } }, - "esbuild-windows-32": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz", - "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==", - "optional": true + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, - "esbuild-windows-64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz", - "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==", - "optional": true + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true }, - "esbuild-windows-arm64": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz", - "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==", - "optional": true + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "devOptional": true + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true }, - "eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "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 - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } + "globalyzer": "0.1.0", + "globrex": "^0.1.2" } }, - "eslint-config-prettier": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz", - "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==", - "dev": true, - "requires": {} + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, - "eslint-plugin-svelte3": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.0.tgz", - "integrity": "sha512-MIQUTuRv3o7LyQ+360qOc9mLT35j1I5YzHr04g/UDcvJTpg0X/kHWELY99ve869Rp/9wjqD7I26Aq5H8OH5RIg==", - "dev": true, - "requires": {} + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true, + "engines": { + "node": ">=4" + } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "engines": { + "node": ">=6" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, + "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==", "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" + "engines": { + "node": ">=0.6" } }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" } }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "peer": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/ts-jest": { + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } - } - }, - "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "@types/jest": { + "optional": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "babel-jest": { + "optional": true }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "esbuild": { + "optional": true } } }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "requires": { - "type": "^2.5.0" - }, "dependencies": { - "type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", - "dev": true - } + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "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==", + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "requires": { - "@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" - }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" + "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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" + "engines": { + "node": ">=4" } }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "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==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "requires": { - "flat-cache": "^3.0.4" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "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, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "dependencies": { + "is-typedarray": "^1.0.0" } }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fp-and-or": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", - "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" + "node_modules/typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" } }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { + "node_modules/unique-filename": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz", - "integrity": "sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q==", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "dependencies": { + "unique-slug": "^2.0.0" } }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "dependencies": { + "imurmurhash": "^0.1.4" } }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "requires": { - "pump": "^3.0.0" + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, - "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==", + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true, - "requires": { - "is-glob": "^4.0.3" + "engines": { + "node": ">= 0.8" } }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "dev": true, - "peer": true + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "node_modules/update-notifier/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, - "requires": { - "ini": "2.0.0" - }, "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true - }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + "node_modules/update-notifier/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/update-notifier/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, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + "node_modules/update-notifier/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 }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "node_modules/update-notifier/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, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "engines": { + "node": ">=8" } }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" + "node_modules/update-notifier/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + "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, + "dependencies": { + "punycode": "^2.1.0" + } }, - "has-flag": { + "node_modules/url-parse-lax": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, - "has-symbols": { + "node_modules/utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true, - "requires": { - "has-symbols": "^1.0.2" + "engines": { + "node": ">= 0.4.0" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" } }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "engines": { + "node": ">= 8" } }, - "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "engines": { + "node": ">= 0.8" } }, - "http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "node_modules/vite": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", + "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.12", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } } }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" + "dependencies": { + "browser-process-hrtime": "^1.0.0" } }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, - "requires": { - "ms": "^2.0.0" + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" } }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "ignore-walk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", - "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, - "requires": { - "minimatch": "^3.0.4" + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "engines": { + "node": ">=10.4" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" + "node_modules/webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "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==", + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "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==", - "requires": { - "binary-extensions": "^2.0.0" + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", "dev": true, - "requires": { - "ci-info": "^2.0.0" + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "requires": { - "has": "^1.0.3" + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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 + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "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 + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" } }, - "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==", + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, - "requires": { - "is-docker": "^2.0.0" + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "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/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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 + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "dev": true, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "devOptional": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "devOptional": true + }, + "@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "devOptional": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "devOptional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "devOptional": true + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "devOptional": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "devOptional": true + }, + "@babel/helpers": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "devOptional": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "devOptional": true + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", + "devOptional": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "devOptional": true + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@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==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==" + }, + "@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==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + } + }, + "@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" + }, + "@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + }, + "@supabase/functions-js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.2.tgz", + "integrity": "sha512-97b2pdrCW4C4khFjotPRlXXs+oPmlbNZbMuR76nGyuNVSbNZ8tsIMYbfUdi4m61vqSUkRk+vieKaeNHMDsPN2A==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.5" + } + }, + "@supabase/gotrue-js": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.11.tgz", + "integrity": "sha512-v6i6LVIvPIb4xP77x7IEbrffyOZkbcDKb/F3nHQ4xguP0izMyxNZqLQmIAYqgTNPUP7JIF666oCkp8y+j0oa7w==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.6" + } + }, + "@supabase/postgrest-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.2.tgz", + "integrity": "sha512-3Dgx5k3RvtKqc8DvR2BEyh2fVyjZe5P4e0zD1r8dyuVmpaYDaASZ2YeNVgyWXMCWH7xzrj4vepTYlKwfj78QLg==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.6" + } + }, + "@supabase/realtime-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.5.1.tgz", + "integrity": "sha512-V++liKGhaeE2CcMMolC5GWO1Qr7vAMRt0xso7xK8gIt0LMjgHKhlmkbMMgixSdbgfYu1OR3qIILfudKEqnUY+g==", + "dev": true, + "requires": { + "@types/phoenix": "^1.5.4", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0", + "websocket": "^1.0.34" + } + }, + "@supabase/storage-js": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.5.tgz", + "integrity": "sha512-Tz1Gqx5/sJFILFmIdeJQAyiSxnjpLUlidYyKzNSRTyLTnqsxngkB0JnXinIBfUnbqXlCTnRnxbH5B5EnDrHl/w==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.0" + } + }, + "@supabase/supabase-js": { + "version": "1.33.2", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.2.tgz", + "integrity": "sha512-OAsvCw4C5L5E+VGwz5ZMm+NAO6BYmMMdVlc6ER6wbb5It8yfaE78HrffeBW5z+gXNkF4bi45O9LH6B/GqS0CdA==", + "dev": true, + "requires": { + "@supabase/functions-js": "^1.3.2", + "@supabase/gotrue-js": "^1.22.10", + "@supabase/postgrest-js": "^0.37.2", + "@supabase/realtime-js": "^1.4.5", + "@supabase/storage-js": "^1.6.5" + } + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", + "requires": { + "tiny-glob": "^0.2.9" + } + }, + "@sveltejs/kit": { + "version": "1.0.0-next.303", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.303.tgz", + "integrity": "sha512-WdxDc8OiF1WEd/bEza7CBdzA+3qIcCi1GKBj/gieKX9I3N8iDJt/Cg2POrLo9wQoJ47nZcAd1eOhfr7XEX1aIQ==", + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.8.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.40", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.40.tgz", + "integrity": "sha512-DtXF01fYGEJkbC7GntU/7jaq9M1SwyyNCkbDA+cfQSXRpm3H7zbu0M80wSQBSpntdd+hgSdxKCxv4GgX6/zI6w==", + "requires": { + "@rollup/pluginutils": "^4.2.0", + "debug": "^4.3.3", + "kleur": "^4.1.4", + "magic-string": "^0.26.1", + "svelte-hmr": "^0.14.11" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trivago/prettier-plugin-sort-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.2.0.tgz", + "integrity": "sha512-DnwLe+z8t/dZX5xBbYZV1+C5STkyK/P6SSq3Nk6NXlJZsgvDZX2eN4ND7bMFgGV/NL/YChWzcNf6ziGba1ktQQ==", + "dev": true, + "requires": { + "@babel/core": "7.13.10", + "@babel/generator": "7.13.9", + "@babel/parser": "7.14.6", + "@babel/traverse": "7.13.0", + "@babel/types": "7.13.0", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.21" + } + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + }, + "@types/phoenix": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", + "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==", + "dev": true + }, + "@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "requires": { + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz", + "integrity": "sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/type-utils": "5.17.0", + "@typescript-eslint/utils": "5.17.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.17.0.tgz", + "integrity": "sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", + "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz", + "integrity": "sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.17.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", + "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", + "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/visitor-keys": "5.17.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", + "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.17.0", + "@typescript-eslint/types": "5.17.0", + "@typescript-eslint/typescript-estree": "5.17.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", + "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.17.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "@zerodevx/svelte-toast": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.7.1.tgz", + "integrity": "sha512-JxyjPlpc3IzwyHLGbU5pDPW68HM1o7FjiSWmm9SIig7NuuBFIqoJkVt9CYr6toAXzi5sLBgu27hT1NntKbKcmA==" + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "requires": {} + }, + "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, + "requires": {} + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "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 + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "devOptional": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "devOptional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builtins": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", + "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", + "dev": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", + "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^1.1.2", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^7.2.0", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true + } + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001323", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz", + "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==", + "devOptional": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "cint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, + "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, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "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 + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.103", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", + "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", + "devOptional": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io-client": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "requires": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0", + "yeast": "0.1.2" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "requires": { + "@socket.io/base64-arraybuffer": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, + "es5-ext": { + "version": "0.10.59", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.59.tgz", + "integrity": "sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.29.tgz", + "integrity": "sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==", + "requires": { + "esbuild-android-64": "0.14.29", + "esbuild-android-arm64": "0.14.29", + "esbuild-darwin-64": "0.14.29", + "esbuild-darwin-arm64": "0.14.29", + "esbuild-freebsd-64": "0.14.29", + "esbuild-freebsd-arm64": "0.14.29", + "esbuild-linux-32": "0.14.29", + "esbuild-linux-64": "0.14.29", + "esbuild-linux-arm": "0.14.29", + "esbuild-linux-arm64": "0.14.29", + "esbuild-linux-mips64le": "0.14.29", + "esbuild-linux-ppc64le": "0.14.29", + "esbuild-linux-riscv64": "0.14.29", + "esbuild-linux-s390x": "0.14.29", + "esbuild-netbsd-64": "0.14.29", + "esbuild-openbsd-64": "0.14.29", + "esbuild-sunos-64": "0.14.29", + "esbuild-windows-32": "0.14.29", + "esbuild-windows-64": "0.14.29", + "esbuild-windows-arm64": "0.14.29" + } + }, + "esbuild-android-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz", + "integrity": "sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==", + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz", + "integrity": "sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==", + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz", + "integrity": "sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==", + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz", + "integrity": "sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==", + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz", + "integrity": "sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==", + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz", + "integrity": "sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==", + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz", + "integrity": "sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==", + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz", + "integrity": "sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==", + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz", + "integrity": "sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==", + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz", + "integrity": "sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==", + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz", + "integrity": "sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==", + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz", + "integrity": "sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==", + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz", + "integrity": "sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==", + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz", + "integrity": "sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==", + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz", + "integrity": "sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==", + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz", + "integrity": "sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==", + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz", + "integrity": "sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==", + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz", + "integrity": "sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==", + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz", + "integrity": "sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==", + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.29", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz", + "integrity": "sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==", + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "fast-check": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.24.0.tgz", + "integrity": "sha512-iNXbN90lbabaCUfnW5jyXYPwMJLFYl09eJDkXA9ZoidFlBK63gNRvcKxv+8D1OJ1kIYjwBef4bO/K3qesUeWLQ==", + "dev": true, + "requires": { + "pure-rand": "^5.0.1" + } + }, + "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 + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fp-and-or": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", + "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true + }, + "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 + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + } + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "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, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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 + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "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 + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "dev": true + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", - "dev": true - }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -12964,15 +19754,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13000,6 +19788,41 @@ "argparse": "^2.0.1" } }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -13047,13 +19870,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true }, "jsonlines": { "version": "0.1.1", @@ -13096,6 +19916,12 @@ "package-json": "^6.3.0" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -13136,15 +19962,6 @@ "path-exists": "^3.0.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -13162,6 +19979,12 @@ } } }, + "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 + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -13170,12 +19993,12 @@ "peer": true }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -13184,6 +20007,24 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "devOptional": true }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -13206,11 +20047,11 @@ } }, "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -13222,28 +20063,68 @@ "semver": "^6.0.0" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", + "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", "dev": true, "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.0.2", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" + }, + "dependencies": { + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" } }, "media-typer": { @@ -13285,12 +20166,12 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -13300,18 +20181,18 @@ "dev": true }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -13346,9 +20227,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minipass": { "version": "3.1.6", @@ -13369,15 +20250,15 @@ } }, "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", + "encoding": "^0.1.13", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" } }, "minipass-flush": { @@ -13465,9 +20346,9 @@ "dev": true }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" }, "natural-compare": { "version": "1.4.0", @@ -13489,35 +20370,60 @@ "peer": true }, "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, "requires": { "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -13543,6 +20449,12 @@ "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", "devOptional": true }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, "node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", @@ -13559,17 +20471,34 @@ } }, "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", + "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", "dev": true, "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "dependencies": { + "hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true + } + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -13602,9 +20531,9 @@ } }, "npm-check-updates": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.3.1.tgz", - "integrity": "sha512-rvXyiUnc9zw3WXakqv0LsdFDc1V4T8DHG8AdWEjJiqfOZdBI4q8ekTt/BFqLQAtcXo5Pu6WGqjA9oDnFi4UV3g==", + "version": "12.5.4", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.4.tgz", + "integrity": "sha512-4+27zaTdieWgvPLaCZ/A6Q2WC1cYVcrc2SqVmLFYgkWBrKw1QkwpeV16FSvkFGZr3OdFyr7Dpjw8JRn4H2QxFw==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -13621,9 +20550,9 @@ "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", - "minimatch": "^5.0.0", + "minimatch": "^5.0.1", "p-map": "^4.0.0", - "pacote": "^13.0.2", + "pacote": "^13.0.3", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.2", @@ -13681,21 +20610,58 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "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 }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, "minimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.0.tgz", - "integrity": "sha512-EU+GCVjXD00yOUf1TwAHVP7v3fBD3A8RkkPYsWWKGWesxM/572sL53wJQnHxquHlRhYUV36wHkqrN8cdikKc2g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -13743,16 +20709,33 @@ "dev": true }, "npm-package-arg": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.0.tgz", - "integrity": "sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", + "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", "dev": true, "requires": { - "hosted-git-info": "^4.1.0", + "hosted-git-info": "^5.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" + "validate-npm-package-name": "^4.0.0" }, "dependencies": { + "hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true + } + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -13765,14 +20748,14 @@ } }, "npm-packlist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", - "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-4.0.0.tgz", + "integrity": "sha512-gL6XC/iw9YSmqArmZOGSkyy+yIZf2f7uH0p4Vmxef/irn73vd9/rDkCtvm+a9rh/QK2xGYfCAMOghM06ymzC0A==", "dev": true, "requires": { - "glob": "^7.1.6", + "glob": "^7.2.0", "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", + "npm-bundled": "^1.1.2", "npm-normalize-package-bin": "^1.0.1" } }, @@ -13800,67 +20783,18 @@ } }, "npm-registry-fetch": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.0.tgz", - "integrity": "sha512-MmiMuV9DU5gRuAU0jia952Qq+E4h7ZoUaeltCXivhClcqfOVKqNLZEQsRUOb6a8WQY+um8x97JcUuaWFoPoBBw==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", + "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", "dev": true, "requires": { - "make-fetch-happen": "^10.0.2", + "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", - "minipass-fetch": "^1.4.1", + "minipass-fetch": "^2.0.3", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", + "npm-package-arg": "^9.0.1", "proc-log": "^2.0.0" - }, - "dependencies": { - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "lru-cache": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz", - "integrity": "sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz", - "integrity": "sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.0", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.3.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.4.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - } - } } }, "npm-run-path": { @@ -13884,6 +20818,12 @@ "set-blocking": "^2.0.0" } }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -13970,21 +20910,21 @@ "dev": true }, "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" } }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" } }, "p-map": { @@ -14033,28 +20973,28 @@ } }, "pacote": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.2.tgz", - "integrity": "sha512-3LyfvDk2BSJNFQZIcDqnLNa7IsYb6KwX3H9uZPwaHJFIX6Gv5N9QHU+s7mEs/RbN4/ta6KUT39LAi2l6EkBi5A==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.5.tgz", + "integrity": "sha512-6CYfot3/rUAn3qqzF2d/jrrXm5HlBtvaSgfmg0VtOUAdJ8fbSq21BJwftMGArkL71yXHIbUJ7Bt5B04547HELA==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^2.0.0", - "cacache": "^15.3.0", + "@npmcli/run-script": "^3.0.1", + "cacache": "^16.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", "infer-owner": "^1.0.4", "minipass": "^3.1.6", "mkdirp": "^1.0.4", "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", + "npm-packlist": "^4.0.0", "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", + "npm-registry-fetch": "^13.0.1", "proc-log": "^2.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", + "read-package-json": "^5.0.0", "read-package-json-fast": "^2.0.3", "rimraf": "^3.0.2", "ssri": "^8.0.1", @@ -14075,6 +21015,24 @@ "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", "dev": true }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "parseqs": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", @@ -14135,6 +21093,12 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -14142,45 +21106,6 @@ "dev": true, "requires": { "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } } }, "portfinder": { @@ -14204,22 +21129,22 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } } } }, "postcss": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", - "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "requires": { - "nanoid": "^3.2.0", + "nanoid": "^3.3.1", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -14237,9 +21162,9 @@ "dev": true }, "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", "dev": true }, "prettier-plugin-svelte": { @@ -14249,10 +21174,29 @@ "dev": true, "requires": {} }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "proc-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", - "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true }, "process-nextick-args": { @@ -14319,6 +21263,12 @@ } } }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -14344,6 +21294,12 @@ "escape-goat": "^2.0.0" } }, + "pure-rand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.1.tgz", + "integrity": "sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ==", + "dev": true + }, "qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", @@ -14432,16 +21388,22 @@ "require-from-string": "^2.0.2" } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "read-package-json": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz", - "integrity": "sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", + "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", "dev": true, "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "glob": "^7.2.0", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" } }, "read-package-json-fast": { @@ -14522,6 +21484,12 @@ "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -14566,6 +21534,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -14596,9 +21570,9 @@ } }, "rollup": { - "version": "2.67.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.3.tgz", - "integrity": "sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw==", + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", "requires": { "fsevents": "~2.3.2" } @@ -14629,7 +21603,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "dev": true }, "sander": { "version": "0.5.1", @@ -14643,11 +21617,11 @@ }, "dependencies": { "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "rimraf": { @@ -14660,6 +21634,15 @@ } } }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -14679,12 +21662,12 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { @@ -15056,6 +22039,12 @@ "wbuf": "^1.7.3" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -15065,6 +22054,23 @@ "minipass": "^3.1.1" } }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -15088,6 +22094,16 @@ } } }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -15108,6 +22124,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -15137,20 +22159,47 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "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==" }, "svelte": { - "version": "3.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", - "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==" + "version": "3.46.5", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.5.tgz", + "integrity": "sha512-T4txpIgYEGTkpFY2KQoqvtDmapu/suHMx0GN2zAImdJ7liEdG29P0XpjcNHnOEU1a4lLJn1WXxreobBSIGdcbQ==" }, "svelte-check": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.5.tgz", - "integrity": "sha512-nRft8BbG2wcxyCdHDZ7X43xLcvDzua3xLwq6wzHGcAF3ka3Jyhv2rvgq0+SF9NwHLMefp9C2XkM6etzsxK/cMQ==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.4.6.tgz", + "integrity": "sha512-luzdly7RJhyXucQe8ID/7CqDgXdMrPYXmyZBjCbp+cixzTopZotuWevrB5hWDOnOU19m2cyetigIIa7WDHnCmQ==", "requires": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -15171,15 +22220,15 @@ } }, "svelte-hmr": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.9.tgz", - "integrity": "sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", "requires": {} }, "svelte-preprocess": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz", - "integrity": "sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==", + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", + "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", "requires": { "@types/pug": "^2.0.4", "@types/sass": "^1.16.0", @@ -15187,8 +22236,24 @@ "magic-string": "^0.25.7", "sorcery": "^0.10.0", "strip-indent": "^3.0.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + } } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -15210,13 +22275,24 @@ "yallist": "^4.0.0" } }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", "dev": true, "peer": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -15261,12 +22337,29 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -15282,6 +22375,12 @@ "globrex": "^0.1.2" } }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -15308,10 +22407,52 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } }, "tslib": { "version": "2.3.1", @@ -15351,10 +22492,16 @@ "prelude-ls": "^1.2.1" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "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==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "type-is": { @@ -15377,9 +22524,9 @@ } }, "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==" + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==" }, "unique-filename": { "version": "1.1.1", @@ -15408,6 +22555,12 @@ "crypto-random-string": "^2.0.0" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -15515,9 +22668,9 @@ } }, "utf-8-validate": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", - "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", "devOptional": true, "requires": { "node-gyp-build": "^4.3.0" @@ -15547,6 +22700,25 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -15558,12 +22730,12 @@ } }, "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "requires": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" } }, "vary": { @@ -15573,17 +22745,44 @@ "dev": true }, "vite": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz", - "integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", + "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", "requires": { - "esbuild": "^0.14.14", + "esbuild": "^0.14.27", "fsevents": "~2.3.2", - "postcss": "^8.4.6", + "postcss": "^8.4.12", "resolve": "^1.22.0", "rollup": "^2.59.0" } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, "watchpack": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", @@ -15605,14 +22804,15 @@ } }, "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true }, "webpack": { - "version": "5.69.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", - "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dev": true, "peer": true, "requires": { @@ -15625,7 +22825,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -15684,9 +22884,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -15763,9 +22963,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -15890,13 +23090,41 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "which": { @@ -15993,9 +23221,10 @@ } }, "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, "requires": {} }, "xdg-basedir": { @@ -16004,11 +23233,29 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yaeti": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", @@ -16027,6 +23274,27 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index b527ee7e..5e4575ee 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -10,7 +10,8 @@ "lint": "npm run format && eslint src", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write './**/*.{svelte,ts}'" + "format": "prettier --write './**/*.{svelte,ts}'", + "test": "jest" }, "devDependencies": { "@supabase/gotrue-js": "^1.22.3", @@ -22,9 +23,12 @@ "eslint": "^8.9.0", "eslint-config-prettier": "^8.4.0", "eslint-plugin-svelte3": "^3.4.0", + "fast-check": "^2.24.0", + "jest": "^27.5.1", "npm-check-updates": "^12.3.1", "prettier": "^2.5.1", "prettier-plugin-svelte": "^2.6.0", + "ts-jest": "^27.1.4", "tslib": "^2.3.1", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4" @@ -39,6 +43,5 @@ "svelte-check": "^2.4.5", "svelte-preprocess": "^4.10.3", "typescript": "^4.5.5" - }, - "type": "module" + } } diff --git a/supabase_stream_scripts/src/functions/constants.test.ts b/supabase_stream_scripts/src/functions/constants.test.ts new file mode 100644 index 00000000..7f4fb53c --- /dev/null +++ b/supabase_stream_scripts/src/functions/constants.test.ts @@ -0,0 +1,86 @@ +import { expect, test } from "@jest/globals" +import fc from "fast-check" + +import { getCurrentScene, getSceneChange } from "./constants" +import { ISceneChange, ISceneNames } from "./interfaces" + +test("get current scene - game", () => { + const gameData = { isReplay: false, displayTime: 5, players: [] } + const uiData = { activeScreens: [] } + expect(getCurrentScene(gameData, uiData)).toBe("game") +}) + +test("get current scene - replay", () => { + const gameData = { isReplay: true, displayTime: 5, players: [] } + const uiData = { activeScreens: [] } + expect(getCurrentScene(gameData, uiData)).toBe("replay") +}) + +test("get current scene - loading", () => { + const gameData = { isReplay: true, displayTime: 5, players: [] } + const uiData = { activeScreens: ["ScreenLoading/ScreenLoading"] } + expect(getCurrentScene(gameData, uiData)).toBe("loading") +}) +test("get current scene - menu", () => { + const gameData = { isReplay: true, displayTime: 5, players: [] } + const uiData = { activeScreens: ["some data"] } + expect(getCurrentScene(gameData, uiData)).toBe("menu") +}) + +test("get scene change - no change", () => { + const sceneValues: ISceneNames[] = ["game", "menu", "unknown", "replay", "loading"] + + fc.assert( + fc.property(fc.constantFrom(...sceneValues), fc.constantFrom(...sceneValues), (oldScene, newScene) => { + if (oldScene === newScene) { + expect(getSceneChange(oldScene, newScene, false)).toBe("noChange") + expect(getSceneChange(oldScene, newScene, true)).toBe("noChange") + } + }) + ) +}) + +test("get scene change - with change", () => { + const sceneValues: ISceneNames[] = ["game", "menu", "unknown", "replay", "loading"] + // Pick a value, twice, via "constantFrom" + + fc.assert( + fc.property( + fc.constantFrom(...sceneValues), + fc.constantFrom(...sceneValues), + fc.boolean(), + (oldScene, newScene, containsPlayer) => { + if (oldScene === newScene) { + return + } + + if (["menu", "unknown"].includes(oldScene) && newScene === "game") { + if (containsPlayer) { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toNewGameFromMenu") + } else { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toObserveGame") + } + } else if (oldScene === "replay" && newScene === "game") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toNewGameFromReplay") + } else if (oldScene === "game" && newScene === "replay") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toReplayFromGame") + } else if (["menu", "unknown"].includes(oldScene) && newScene === "replay") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toReplayFromMenu") + } else if (["game", "replay", "loading", "unknown"].includes(oldScene) && newScene === "menu") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("toMenu") + } else if (["menu", "replay", "game", "unknown"].includes(oldScene) && newScene === "loading") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("noChange") + } else if (oldScene === "loading" && ["menu", "game", "replay"].includes(newScene)) { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("unknown") + } else if (newScene === "unknown") { + expect(getSceneChange(oldScene, newScene, containsPlayer)).toBe("unknown") + } else { + // Not covered cases should fail + expect(() => { + false + }).toBe(true) + } + } + ) + ) +}) From 7f548059c39778c9edf24b14952eae7d853a09f9 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Thu, 31 Mar 2022 15:19:27 +0200 Subject: [PATCH 020/391] Fix missing cd --- .github/workflows/test_supabase_stream_scripts.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index f0f92e1e..b90ed31d 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -1,4 +1,4 @@ -name: test_svelte_frontend +name: test_supabase_stream_scripts on: @@ -12,7 +12,7 @@ on: - develop jobs: - test_frontend: + test_supabase_stream_scripts: env: SUBDIRECTORY: supabase_stream_scripts strategy: @@ -43,4 +43,5 @@ jobs: - name: Run tests run: | + cd ${{ env.SUBDIRECTORY }} npm run test From 457f135be83ca32b4b868655611ae1bfe435defa Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Mon, 4 Apr 2022 00:11:20 +0200 Subject: [PATCH 021/391] Add build order overlay which may not be working yet --- alembic.ini | 100 -- supabase_stream_scripts/jest.config.js | 2 +- supabase_stream_scripts/package-lock.json | 926 ++++++++++-------- supabase_stream_scripts/package.json | 5 +- .../src/functions/constants.ts | 55 +- .../src/functions/interfaces.ts | 14 + .../src/pages/BuildOrder.svelte | 229 +++++ .../src/pages/MatchInfo.svelte | 27 +- .../src/pages/StreamManager.svelte | 164 +++- .../src/routes/index.svelte | 9 +- 10 files changed, 979 insertions(+), 552 deletions(-) delete mode 100644 alembic.ini create mode 100644 supabase_stream_scripts/src/pages/BuildOrder.svelte diff --git a/alembic.ini b/alembic.ini deleted file mode 100644 index c3c7e2fc..00000000 --- a/alembic.ini +++ /dev/null @@ -1,100 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = fastapi_server/migrations - -# template used to generate migration files -# file_template = %%(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-dateutil library that can be -# installed by adding `alembic[tz]` to the pip requirements -# string value is passed to dateutil.tz.gettz() -# 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" -# 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. Valid values are: -# -# version_path_separator = : -# version_path_separator = ; -# version_path_separator = space -version_path_separator = os # default: use os.pathsep - -# the output encoding used when revision files -# are written from script.py.mako -# output_encoding = utf-8 - -sqlalchemy.url = sqlite:///fastapi_server/data/sqlmodel.db - - -[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 - -# 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/supabase_stream_scripts/jest.config.js b/supabase_stream_scripts/jest.config.js index eff1ef00..f4b6c3d8 100644 --- a/supabase_stream_scripts/jest.config.js +++ b/supabase_stream_scripts/jest.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { transform: { '^.+\\.ts?$': 'ts-jest', }, diff --git a/supabase_stream_scripts/package-lock.json b/supabase_stream_scripts/package-lock.json index 99779bbc..fff08cdb 100644 --- a/supabase_stream_scripts/package-lock.json +++ b/supabase_stream_scripts/package-lock.json @@ -1538,6 +1538,18 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1573,15 +1585,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@npmcli/git/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1730,9 +1733,9 @@ } }, "node_modules/@supabase/gotrue-js": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.11.tgz", - "integrity": "sha512-v6i6LVIvPIb4xP77x7IEbrffyOZkbcDKb/F3nHQ4xguP0izMyxNZqLQmIAYqgTNPUP7JIF666oCkp8y+j0oa7w==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.12.tgz", + "integrity": "sha512-/baPkNiumE2B+OLSpvZquDsTqnOTAsG/07GBq5rXU8/e0rSyjljAFf8gnawGPezjlDGTFr2fjRYs0BYMz4LD/A==", "dev": true, "dependencies": { "cross-fetch": "^3.0.6" @@ -1748,14 +1751,12 @@ } }, "node_modules/@supabase/realtime-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.5.1.tgz", - "integrity": "sha512-V++liKGhaeE2CcMMolC5GWO1Qr7vAMRt0xso7xK8gIt0LMjgHKhlmkbMMgixSdbgfYu1OR3qIILfudKEqnUY+g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.6.2.tgz", + "integrity": "sha512-0aK2WoCYvS2lO2BGQwPaxz91oq76lJ+/rSzAMUDFe8mZFj+v4ugifDMUHKpSxJWqW4u4OB9cs3zw11qWlQQCrw==", "dev": true, "dependencies": { "@types/phoenix": "^1.5.4", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0", "websocket": "^1.0.34" } }, @@ -1769,15 +1770,15 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "1.33.2", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.2.tgz", - "integrity": "sha512-OAsvCw4C5L5E+VGwz5ZMm+NAO6BYmMMdVlc6ER6wbb5It8yfaE78HrffeBW5z+gXNkF4bi45O9LH6B/GqS0CdA==", + "version": "1.33.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.3.tgz", + "integrity": "sha512-wQyCoP03bs21UvfVxRYrFTBmYSGMXjFAKlmP66MACqWUfYLKgJJ3/xVFfOLyyi7M8QTYw8XUK+z4yqQ5p1l88Q==", "dev": true, "dependencies": { "@supabase/functions-js": "^1.3.2", "@supabase/gotrue-js": "^1.22.10", "@supabase/postgrest-js": "^0.37.2", - "@supabase/realtime-js": "^1.4.5", + "@supabase/realtime-js": "^1.6.2", "@supabase/storage-js": "^1.6.5" } }, @@ -1790,13 +1791,13 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.303", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.303.tgz", - "integrity": "sha512-WdxDc8OiF1WEd/bEza7CBdzA+3qIcCi1GKBj/gieKX9I3N8iDJt/Cg2POrLo9wQoJ47nZcAd1eOhfr7XEX1aIQ==", + "version": "1.0.0-next.304", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.304.tgz", + "integrity": "sha512-3+bCoDsF2Omolx51lK6+4Zgr8NYge8USxKpZpAg8OfonEW8L4GToyV4g+udLMCI3CC4QEw3eS1RFUj9UxLf2NQ==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", - "vite": "^2.8.0" + "vite": "^2.9.0" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -2196,6 +2197,18 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2321,6 +2334,18 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -3399,6 +3424,18 @@ "semver": "^7.0.0" } }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/builtins/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -3452,15 +3489,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -3534,9 +3562,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001323", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz", - "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==", + "version": "1.0.30001324", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001324.tgz", + "integrity": "sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==", "devOptional": true, "funding": [ { @@ -4536,9 +4564,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.29.tgz", - "integrity": "sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.30.tgz", + "integrity": "sha512-wCecQSBkIjp2xjuXY+wcXS/PpOQo9rFh4NAKPh4Pm9f3fuLcnxkR0rDzA+mYP88FtXIUcXUyYmaIgfrzRl55jA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -4547,32 +4575,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.29", - "esbuild-android-arm64": "0.14.29", - "esbuild-darwin-64": "0.14.29", - "esbuild-darwin-arm64": "0.14.29", - "esbuild-freebsd-64": "0.14.29", - "esbuild-freebsd-arm64": "0.14.29", - "esbuild-linux-32": "0.14.29", - "esbuild-linux-64": "0.14.29", - "esbuild-linux-arm": "0.14.29", - "esbuild-linux-arm64": "0.14.29", - "esbuild-linux-mips64le": "0.14.29", - "esbuild-linux-ppc64le": "0.14.29", - "esbuild-linux-riscv64": "0.14.29", - "esbuild-linux-s390x": "0.14.29", - "esbuild-netbsd-64": "0.14.29", - "esbuild-openbsd-64": "0.14.29", - "esbuild-sunos-64": "0.14.29", - "esbuild-windows-32": "0.14.29", - "esbuild-windows-64": "0.14.29", - "esbuild-windows-arm64": "0.14.29" + "esbuild-android-64": "0.14.30", + "esbuild-android-arm64": "0.14.30", + "esbuild-darwin-64": "0.14.30", + "esbuild-darwin-arm64": "0.14.30", + "esbuild-freebsd-64": "0.14.30", + "esbuild-freebsd-arm64": "0.14.30", + "esbuild-linux-32": "0.14.30", + "esbuild-linux-64": "0.14.30", + "esbuild-linux-arm": "0.14.30", + "esbuild-linux-arm64": "0.14.30", + "esbuild-linux-mips64le": "0.14.30", + "esbuild-linux-ppc64le": "0.14.30", + "esbuild-linux-riscv64": "0.14.30", + "esbuild-linux-s390x": "0.14.30", + "esbuild-netbsd-64": "0.14.30", + "esbuild-openbsd-64": "0.14.30", + "esbuild-sunos-64": "0.14.30", + "esbuild-windows-32": "0.14.30", + "esbuild-windows-64": "0.14.30", + "esbuild-windows-arm64": "0.14.30" } }, "node_modules/esbuild-android-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz", - "integrity": "sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.30.tgz", + "integrity": "sha512-vdJ7t8A8msPfKpYUGUV/KaTQRiZ0vDa2XSTlzXVkGGVHLKPeb85PBUtYJcEgw3htW3IdX5i1t1IMdQCwJJgNAg==", "cpu": [ "x64" ], @@ -4585,9 +4613,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz", - "integrity": "sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.30.tgz", + "integrity": "sha512-BdgGfxeA5hBQNErLr7BWJUA8xjflEfyaARICy8e0OJYNSAwDbEzOf8LyiKWSrDcgV129mWhi3VpbNQvOIDEHcg==", "cpu": [ "arm64" ], @@ -4600,9 +4628,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz", - "integrity": "sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.30.tgz", + "integrity": "sha512-VRaOXMMrsG5n53pl4qFZQdXy2+E0NoLP/QH3aDUI0+bQP+ZHDmbINKcDy2IX7GVFI9kqPS18iJNAs5a6/G2LZg==", "cpu": [ "x64" ], @@ -4615,9 +4643,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz", - "integrity": "sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.30.tgz", + "integrity": "sha512-qDez+fHMOrO9Oc9qjt/x+sy09RJVh62kik5tVybKRLmezeV4qczM9/sAYY57YN0aWLdHbcCj2YqJUWYJNsgKnw==", "cpu": [ "arm64" ], @@ -4630,9 +4658,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz", - "integrity": "sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.30.tgz", + "integrity": "sha512-mec1jENcImVVagddZlGWsdAUwBnzR5cgnhzCxv+9fSMxKbx1uZYLLUAnLPp8m/i934zrumR1xGjJ5VoWdPlI2w==", "cpu": [ "x64" ], @@ -4645,9 +4673,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz", - "integrity": "sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.30.tgz", + "integrity": "sha512-cpjbTs6Iok/AfeB0JgTzyUJTMStC1SQULmany5nHx6S4GTkSgaAHuJzZO0GcVWqghI4e0YL/bjXAhN5Mn6feNw==", "cpu": [ "arm64" ], @@ -4660,9 +4688,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz", - "integrity": "sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.30.tgz", + "integrity": "sha512-liIONVT4F2kZmOMwtwASqZ8WkIjb5HHBR9HUffdHiuotSTF3CyZO+EJf+Og+SYYuuVIvt0qHNSFjBA/iSESteQ==", "cpu": [ "ia32" ], @@ -4675,9 +4703,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz", - "integrity": "sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.30.tgz", + "integrity": "sha512-LUnpzoMpRqFON5En4qEj6NWiyH6a1K+Y2qYNKrCy5qPTjDoG/EWeqMz69n8Uv7pRuvDKl3FNGJ1dufTrA5i0sw==", "cpu": [ "x64" ], @@ -4690,9 +4718,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz", - "integrity": "sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.30.tgz", + "integrity": "sha512-97T+bbXnpqf7mfIG49UR7ZSJFGgvc22byn74qw3Kx2GDCBSQoVFjyWuKOHGXp8nXk3XYrdFF+mQ8yQ7aNsgQvg==", "cpu": [ "arm" ], @@ -4705,9 +4733,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz", - "integrity": "sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.30.tgz", + "integrity": "sha512-DHZHn6FK5q/KL0fpNT/0jE38Nnyk2rXxKE9WENi95EXtqfOLPgE8tzjTZQNgpr61R95QX4ymQU26ni3IZk8buQ==", "cpu": [ "arm64" ], @@ -4720,9 +4748,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz", - "integrity": "sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.30.tgz", + "integrity": "sha512-fLUzTFZ7uknC0aPTk7/lM7NmaG/9ZqE3SaHEphcaM009SZK/mDOvZugWi1ss6WGNhk13dUrhkfHcc4FSb9hYhg==", "cpu": [ "mips64el" ], @@ -4735,9 +4763,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz", - "integrity": "sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.30.tgz", + "integrity": "sha512-2Oudm2WEfj0dNU9bzIl5L/LrsMEmHWsOsYgJJqu8fDyUDgER+J1d33qz3cUdjsJk7gAENayIxDSpsuCszx0w3A==", "cpu": [ "ppc64" ], @@ -4750,9 +4778,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz", - "integrity": "sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.30.tgz", + "integrity": "sha512-RPMucPW47rV4t2jlelaE948iCRtbZf5RhifxSwzlpM1Mqdyu99MMNK0w4jFreGTmLN+oGomxIOxD6n+2E/XqHw==", "cpu": [ "riscv64" ], @@ -4765,9 +4793,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz", - "integrity": "sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.30.tgz", + "integrity": "sha512-OZ68r7ok6qO7hdwrwQn2p5jbIRRcUcVaAykB7e0uCA0ODwfeGunILM6phJtq2Oz4dlEEFvd+tSuma3paQKwt+A==", "cpu": [ "s390x" ], @@ -4780,9 +4808,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz", - "integrity": "sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.30.tgz", + "integrity": "sha512-iyejQUKn0TzpPkufq8pSCxOg9NheycQbMbPCmjefTe9wYuUlBt1TcHvdoJnYbQzsAhAh1BNq+s0ycRsIJFZzaQ==", "cpu": [ "x64" ], @@ -4795,9 +4823,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz", - "integrity": "sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.30.tgz", + "integrity": "sha512-UyK1MTMcy4j5fH260fsE1o6MVgWNhb62eCK2yCKCRazZv8Nqdc2WiP9ygjWidmEdCDS+A6MuVp9ozk9uoQtQpA==", "cpu": [ "x64" ], @@ -4810,9 +4838,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz", - "integrity": "sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.30.tgz", + "integrity": "sha512-aQRtRTNKHB4YuG+xXATe5AoRTNY48IJg5vjE8ElxfmjO9+KdX7MHFkTLhlKevCD6rNANtB3qOlSIeAiXTwHNqw==", "cpu": [ "x64" ], @@ -4825,9 +4853,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz", - "integrity": "sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.30.tgz", + "integrity": "sha512-9/fb1tPtpacMqxAXp3fGHowUDg/l9dVch5hKmCLEZC6PdGljh6h372zMdJwYfH0Bd5CCPT0Wx95uycBLJiqpXA==", "cpu": [ "ia32" ], @@ -4840,9 +4868,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz", - "integrity": "sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.30.tgz", + "integrity": "sha512-DHgITeUhPAnN9I5O6QBa1GVyPOhiYCn4S4TtQr7sO4+X0LNyqnlmA1M0qmGkUdDC1QQfjI8uQ4G/whdWb2pWIQ==", "cpu": [ "x64" ], @@ -4855,9 +4883,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz", - "integrity": "sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.30.tgz", + "integrity": "sha512-F1kLyQH7zSgjh5eLxogGZN7C9+KNs9m+s7Q6WZoMmCWT/6j998zlaoECHyM8izJRRfsvw2eZlEa1jO6/IOU1AQ==", "cpu": [ "arm64" ], @@ -6113,15 +6141,15 @@ } }, "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/hpack.js": { @@ -8209,6 +8237,18 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -8848,18 +8888,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "devOptional": true }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -8882,15 +8910,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/magic-string": { @@ -8975,15 +9000,6 @@ "node": ">= 6" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -9249,9 +9265,9 @@ } }, "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", "engines": { "node": "*" } @@ -9403,9 +9419,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", "devOptional": true, "bin": { "node-gyp-build": "bin.js", @@ -9413,6 +9429,18 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-gyp/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -9470,25 +9498,16 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true, - "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/normalize-package-data/node_modules/semver": { @@ -9533,32 +9552,32 @@ } }, "node_modules/npm-check-updates": { - "version": "12.5.4", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.4.tgz", - "integrity": "sha512-4+27zaTdieWgvPLaCZ/A6Q2WC1cYVcrc2SqVmLFYgkWBrKw1QkwpeV16FSvkFGZr3OdFyr7Dpjw8JRn4H2QxFw==", + "version": "12.5.7", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.7.tgz", + "integrity": "sha512-WDkqPBevmgphV1UH3FImsDEpTAq2UFvnMZC3GdXPknE2VL701kfKylnae8IA9ZeYfm/uU0249N9gjMXqA/9y3w==", "dev": true, "dependencies": { "chalk": "^4.1.2", "cint": "^8.2.1", "cli-table": "^0.3.11", - "commander": "^9.0.0", + "commander": "^9.1.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", "fp-and-or": "^0.1.3", "get-stdin": "^8.0.0", "globby": "^11.0.4", - "hosted-git-info": "^4.1.0", + "hosted-git-info": "^5.0.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", "minimatch": "^5.0.1", "p-map": "^4.0.0", - "pacote": "^13.0.3", + "pacote": "^13.0.5", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.2", - "rc-config-loader": "^4.0.0", + "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -9674,6 +9693,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-check-updates/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -9755,6 +9786,18 @@ "node": ">=10" } }, + "node_modules/npm-install-checks/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-install-checks/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -9790,25 +9833,16 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm-package-arg/node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true, - "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/npm-package-arg/node_modules/semver": { @@ -9859,6 +9893,18 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-pick-manifest/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -10392,9 +10438,9 @@ } }, "node_modules/prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -10678,9 +10724,9 @@ } }, "node_modules/rc-config-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", - "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.0.tgz", + "integrity": "sha512-aW+kX4qy0CiM9L4fG4Us3oEOpIrOrXzWykAn+xldD07Y9PXWjTH744oHbv0Kc9ZwWaylw3jMjxaf14RgStrNrA==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -11732,9 +11778,9 @@ } }, "node_modules/svelte": { - "version": "3.46.5", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.5.tgz", - "integrity": "sha512-T4txpIgYEGTkpFY2KQoqvtDmapu/suHMx0GN2zAImdJ7liEdG29P0XpjcNHnOEU1a4lLJn1WXxreobBSIGdcbQ==", + "version": "3.46.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.6.tgz", + "integrity": "sha512-o9nNft/OzCz/9kJpmWa1S52GAM+huCjPIsNWydYmgei74ZWlOA9/hN9+Z12INdklghu31seEXZMRHhS1+8DETw==", "engines": { "node": ">= 8" } @@ -12137,6 +12183,18 @@ } } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-jest/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -12386,6 +12444,18 @@ "node": ">=8" } }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/update-notifier/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -12630,9 +12700,9 @@ } }, "node_modules/webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.71.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", + "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", "dev": true, "peer": true, "dependencies": { @@ -14479,6 +14549,15 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -14507,12 +14586,6 @@ "which": "^2.0.2" }, "dependencies": { - "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -14635,9 +14708,9 @@ } }, "@supabase/gotrue-js": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.11.tgz", - "integrity": "sha512-v6i6LVIvPIb4xP77x7IEbrffyOZkbcDKb/F3nHQ4xguP0izMyxNZqLQmIAYqgTNPUP7JIF666oCkp8y+j0oa7w==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.12.tgz", + "integrity": "sha512-/baPkNiumE2B+OLSpvZquDsTqnOTAsG/07GBq5rXU8/e0rSyjljAFf8gnawGPezjlDGTFr2fjRYs0BYMz4LD/A==", "dev": true, "requires": { "cross-fetch": "^3.0.6" @@ -14653,14 +14726,12 @@ } }, "@supabase/realtime-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.5.1.tgz", - "integrity": "sha512-V++liKGhaeE2CcMMolC5GWO1Qr7vAMRt0xso7xK8gIt0LMjgHKhlmkbMMgixSdbgfYu1OR3qIILfudKEqnUY+g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.6.2.tgz", + "integrity": "sha512-0aK2WoCYvS2lO2BGQwPaxz91oq76lJ+/rSzAMUDFe8mZFj+v4ugifDMUHKpSxJWqW4u4OB9cs3zw11qWlQQCrw==", "dev": true, "requires": { "@types/phoenix": "^1.5.4", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0", "websocket": "^1.0.34" } }, @@ -14674,15 +14745,15 @@ } }, "@supabase/supabase-js": { - "version": "1.33.2", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.2.tgz", - "integrity": "sha512-OAsvCw4C5L5E+VGwz5ZMm+NAO6BYmMMdVlc6ER6wbb5It8yfaE78HrffeBW5z+gXNkF4bi45O9LH6B/GqS0CdA==", + "version": "1.33.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.33.3.tgz", + "integrity": "sha512-wQyCoP03bs21UvfVxRYrFTBmYSGMXjFAKlmP66MACqWUfYLKgJJ3/xVFfOLyyi7M8QTYw8XUK+z4yqQ5p1l88Q==", "dev": true, "requires": { "@supabase/functions-js": "^1.3.2", "@supabase/gotrue-js": "^1.22.10", "@supabase/postgrest-js": "^0.37.2", - "@supabase/realtime-js": "^1.4.5", + "@supabase/realtime-js": "^1.6.2", "@supabase/storage-js": "^1.6.5" } }, @@ -14695,13 +14766,13 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.303", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.303.tgz", - "integrity": "sha512-WdxDc8OiF1WEd/bEza7CBdzA+3qIcCi1GKBj/gieKX9I3N8iDJt/Cg2POrLo9wQoJ47nZcAd1eOhfr7XEX1aIQ==", + "version": "1.0.0-next.304", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.304.tgz", + "integrity": "sha512-3+bCoDsF2Omolx51lK6+4Zgr8NYge8USxKpZpAg8OfonEW8L4GToyV4g+udLMCI3CC4QEw3eS1RFUj9UxLf2NQ==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", - "vite": "^2.8.0" + "vite": "^2.9.0" } }, "@sveltejs/vite-plugin-svelte": { @@ -15054,6 +15125,15 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -15119,6 +15199,15 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -15975,6 +16064,15 @@ "semver": "^7.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -16016,14 +16114,6 @@ "ssri": "^8.0.1", "tar": "^6.1.11", "unique-filename": "^1.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true - } } }, "cacheable-request": { @@ -16080,9 +16170,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001323", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz", - "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==", + "version": "1.0.30001324", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001324.tgz", + "integrity": "sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==", "devOptional": true }, "chalk": { @@ -16864,150 +16954,150 @@ } }, "esbuild": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.29.tgz", - "integrity": "sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==", - "requires": { - "esbuild-android-64": "0.14.29", - "esbuild-android-arm64": "0.14.29", - "esbuild-darwin-64": "0.14.29", - "esbuild-darwin-arm64": "0.14.29", - "esbuild-freebsd-64": "0.14.29", - "esbuild-freebsd-arm64": "0.14.29", - "esbuild-linux-32": "0.14.29", - "esbuild-linux-64": "0.14.29", - "esbuild-linux-arm": "0.14.29", - "esbuild-linux-arm64": "0.14.29", - "esbuild-linux-mips64le": "0.14.29", - "esbuild-linux-ppc64le": "0.14.29", - "esbuild-linux-riscv64": "0.14.29", - "esbuild-linux-s390x": "0.14.29", - "esbuild-netbsd-64": "0.14.29", - "esbuild-openbsd-64": "0.14.29", - "esbuild-sunos-64": "0.14.29", - "esbuild-windows-32": "0.14.29", - "esbuild-windows-64": "0.14.29", - "esbuild-windows-arm64": "0.14.29" + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.30.tgz", + "integrity": "sha512-wCecQSBkIjp2xjuXY+wcXS/PpOQo9rFh4NAKPh4Pm9f3fuLcnxkR0rDzA+mYP88FtXIUcXUyYmaIgfrzRl55jA==", + "requires": { + "esbuild-android-64": "0.14.30", + "esbuild-android-arm64": "0.14.30", + "esbuild-darwin-64": "0.14.30", + "esbuild-darwin-arm64": "0.14.30", + "esbuild-freebsd-64": "0.14.30", + "esbuild-freebsd-arm64": "0.14.30", + "esbuild-linux-32": "0.14.30", + "esbuild-linux-64": "0.14.30", + "esbuild-linux-arm": "0.14.30", + "esbuild-linux-arm64": "0.14.30", + "esbuild-linux-mips64le": "0.14.30", + "esbuild-linux-ppc64le": "0.14.30", + "esbuild-linux-riscv64": "0.14.30", + "esbuild-linux-s390x": "0.14.30", + "esbuild-netbsd-64": "0.14.30", + "esbuild-openbsd-64": "0.14.30", + "esbuild-sunos-64": "0.14.30", + "esbuild-windows-32": "0.14.30", + "esbuild-windows-64": "0.14.30", + "esbuild-windows-arm64": "0.14.30" } }, "esbuild-android-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz", - "integrity": "sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.30.tgz", + "integrity": "sha512-vdJ7t8A8msPfKpYUGUV/KaTQRiZ0vDa2XSTlzXVkGGVHLKPeb85PBUtYJcEgw3htW3IdX5i1t1IMdQCwJJgNAg==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz", - "integrity": "sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.30.tgz", + "integrity": "sha512-BdgGfxeA5hBQNErLr7BWJUA8xjflEfyaARICy8e0OJYNSAwDbEzOf8LyiKWSrDcgV129mWhi3VpbNQvOIDEHcg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz", - "integrity": "sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.30.tgz", + "integrity": "sha512-VRaOXMMrsG5n53pl4qFZQdXy2+E0NoLP/QH3aDUI0+bQP+ZHDmbINKcDy2IX7GVFI9kqPS18iJNAs5a6/G2LZg==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz", - "integrity": "sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.30.tgz", + "integrity": "sha512-qDez+fHMOrO9Oc9qjt/x+sy09RJVh62kik5tVybKRLmezeV4qczM9/sAYY57YN0aWLdHbcCj2YqJUWYJNsgKnw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz", - "integrity": "sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.30.tgz", + "integrity": "sha512-mec1jENcImVVagddZlGWsdAUwBnzR5cgnhzCxv+9fSMxKbx1uZYLLUAnLPp8m/i934zrumR1xGjJ5VoWdPlI2w==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz", - "integrity": "sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.30.tgz", + "integrity": "sha512-cpjbTs6Iok/AfeB0JgTzyUJTMStC1SQULmany5nHx6S4GTkSgaAHuJzZO0GcVWqghI4e0YL/bjXAhN5Mn6feNw==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz", - "integrity": "sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.30.tgz", + "integrity": "sha512-liIONVT4F2kZmOMwtwASqZ8WkIjb5HHBR9HUffdHiuotSTF3CyZO+EJf+Og+SYYuuVIvt0qHNSFjBA/iSESteQ==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz", - "integrity": "sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.30.tgz", + "integrity": "sha512-LUnpzoMpRqFON5En4qEj6NWiyH6a1K+Y2qYNKrCy5qPTjDoG/EWeqMz69n8Uv7pRuvDKl3FNGJ1dufTrA5i0sw==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz", - "integrity": "sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.30.tgz", + "integrity": "sha512-97T+bbXnpqf7mfIG49UR7ZSJFGgvc22byn74qw3Kx2GDCBSQoVFjyWuKOHGXp8nXk3XYrdFF+mQ8yQ7aNsgQvg==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz", - "integrity": "sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.30.tgz", + "integrity": "sha512-DHZHn6FK5q/KL0fpNT/0jE38Nnyk2rXxKE9WENi95EXtqfOLPgE8tzjTZQNgpr61R95QX4ymQU26ni3IZk8buQ==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz", - "integrity": "sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.30.tgz", + "integrity": "sha512-fLUzTFZ7uknC0aPTk7/lM7NmaG/9ZqE3SaHEphcaM009SZK/mDOvZugWi1ss6WGNhk13dUrhkfHcc4FSb9hYhg==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz", - "integrity": "sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.30.tgz", + "integrity": "sha512-2Oudm2WEfj0dNU9bzIl5L/LrsMEmHWsOsYgJJqu8fDyUDgER+J1d33qz3cUdjsJk7gAENayIxDSpsuCszx0w3A==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz", - "integrity": "sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.30.tgz", + "integrity": "sha512-RPMucPW47rV4t2jlelaE948iCRtbZf5RhifxSwzlpM1Mqdyu99MMNK0w4jFreGTmLN+oGomxIOxD6n+2E/XqHw==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz", - "integrity": "sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.30.tgz", + "integrity": "sha512-OZ68r7ok6qO7hdwrwQn2p5jbIRRcUcVaAykB7e0uCA0ODwfeGunILM6phJtq2Oz4dlEEFvd+tSuma3paQKwt+A==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz", - "integrity": "sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.30.tgz", + "integrity": "sha512-iyejQUKn0TzpPkufq8pSCxOg9NheycQbMbPCmjefTe9wYuUlBt1TcHvdoJnYbQzsAhAh1BNq+s0ycRsIJFZzaQ==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz", - "integrity": "sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.30.tgz", + "integrity": "sha512-UyK1MTMcy4j5fH260fsE1o6MVgWNhb62eCK2yCKCRazZv8Nqdc2WiP9ygjWidmEdCDS+A6MuVp9ozk9uoQtQpA==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz", - "integrity": "sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.30.tgz", + "integrity": "sha512-aQRtRTNKHB4YuG+xXATe5AoRTNY48IJg5vjE8ElxfmjO9+KdX7MHFkTLhlKevCD6rNANtB3qOlSIeAiXTwHNqw==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz", - "integrity": "sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.30.tgz", + "integrity": "sha512-9/fb1tPtpacMqxAXp3fGHowUDg/l9dVch5hKmCLEZC6PdGljh6h372zMdJwYfH0Bd5CCPT0Wx95uycBLJiqpXA==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz", - "integrity": "sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.30.tgz", + "integrity": "sha512-DHgITeUhPAnN9I5O6QBa1GVyPOhiYCn4S4TtQr7sO4+X0LNyqnlmA1M0qmGkUdDC1QQfjI8uQ4G/whdWb2pWIQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.29", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz", - "integrity": "sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==", + "version": "0.14.30", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.30.tgz", + "integrity": "sha512-F1kLyQH7zSgjh5eLxogGZN7C9+KNs9m+s7Q6WZoMmCWT/6j998zlaoECHyM8izJRRfsvw2eZlEa1jO6/IOU1AQ==", "optional": true }, "escalade": { @@ -17946,12 +18036,12 @@ "dev": true }, "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "lru-cache": "^7.5.1" } }, "hpack.js": { @@ -19517,6 +19607,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -20007,18 +20106,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "devOptional": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -20038,13 +20125,10 @@ "dev": true }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "dev": true }, "magic-string": { "version": "0.26.1", @@ -20109,12 +20193,6 @@ "agent-base": "6", "debug": "4" } - }, - "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true } } }, @@ -20315,9 +20393,9 @@ "dev": true }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" }, "mri": { "version": "1.2.0", @@ -20432,6 +20510,15 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -20444,9 +20531,9 @@ } }, "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", "devOptional": true }, "node-int64": { @@ -20482,21 +20569,13 @@ "validate-npm-package-license": "^3.0.4" }, "dependencies": { - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true - } + "yallist": "^4.0.0" } }, "semver": { @@ -20531,32 +20610,32 @@ } }, "npm-check-updates": { - "version": "12.5.4", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.4.tgz", - "integrity": "sha512-4+27zaTdieWgvPLaCZ/A6Q2WC1cYVcrc2SqVmLFYgkWBrKw1QkwpeV16FSvkFGZr3OdFyr7Dpjw8JRn4H2QxFw==", + "version": "12.5.7", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.7.tgz", + "integrity": "sha512-WDkqPBevmgphV1UH3FImsDEpTAq2UFvnMZC3GdXPknE2VL701kfKylnae8IA9ZeYfm/uU0249N9gjMXqA/9y3w==", "dev": true, "requires": { "chalk": "^4.1.2", "cint": "^8.2.1", "cli-table": "^0.3.11", - "commander": "^9.0.0", + "commander": "^9.1.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", "fp-and-or": "^0.1.3", "get-stdin": "^8.0.0", "globby": "^11.0.4", - "hosted-git-info": "^4.1.0", + "hosted-git-info": "^5.0.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", "minimatch": "^5.0.1", "p-map": "^4.0.0", - "pacote": "^13.0.3", + "pacote": "^13.0.5", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.2", - "rc-config-loader": "^4.0.0", + "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -20635,6 +20714,15 @@ "p-locate": "^5.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -20691,6 +20779,15 @@ "semver": "^7.1.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -20719,21 +20816,13 @@ "validate-npm-package-name": "^4.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "dev": true - } + "yallist": "^4.0.0" } }, "semver": { @@ -20771,6 +20860,15 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -21162,9 +21260,9 @@ "dev": true }, "prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true }, "prettier-plugin-svelte": { @@ -21377,9 +21475,9 @@ } }, "rc-config-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.0.0.tgz", - "integrity": "sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.0.tgz", + "integrity": "sha512-aW+kX4qy0CiM9L4fG4Us3oEOpIrOrXzWykAn+xldD07Y9PXWjTH744oHbv0Kc9ZwWaylw3jMjxaf14RgStrNrA==", "dev": true, "requires": { "debug": "^4.1.1", @@ -22192,9 +22290,9 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "svelte": { - "version": "3.46.5", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.5.tgz", - "integrity": "sha512-T4txpIgYEGTkpFY2KQoqvtDmapu/suHMx0GN2zAImdJ7liEdG29P0XpjcNHnOEU1a4lLJn1WXxreobBSIGdcbQ==" + "version": "3.46.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.6.tgz", + "integrity": "sha512-o9nNft/OzCz/9kJpmWa1S52GAM+huCjPIsNWydYmgei74ZWlOA9/hN9+Z12INdklghu31seEXZMRHhS1+8DETw==" }, "svelte-check": { "version": "2.4.6", @@ -22443,6 +22541,15 @@ "yargs-parser": "20.x" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -22629,6 +22736,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -22810,9 +22926,9 @@ "dev": true }, "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.71.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", + "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", "dev": true, "peer": true, "requires": { diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index 5e4575ee..de8b868c 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -2,7 +2,7 @@ "name": "my-app", "version": "0.0.1", "scripts": { - "dev": "cross-env BACKEND_SERVER='localhost:8000' SC2ACCOUNTSDB='sc2accounts_dev' svelte-kit dev", + "dev": "cross-env BACKEND_SERVER='localhost:8000' SC2ACCOUNTSDB='sc2accounts_dev' SC2BUILDORDERSDB='sc2buildorders_dev' svelte-kit dev", "build": "svelte-kit build", "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", @@ -43,5 +43,6 @@ "svelte-check": "^2.4.5", "svelte-preprocess": "^4.10.3", "typescript": "^4.5.5" - } + }, + "type": "module" } diff --git a/supabase_stream_scripts/src/functions/constants.ts b/supabase_stream_scripts/src/functions/constants.ts index 3d77fdbe..866bb8ff 100644 --- a/supabase_stream_scripts/src/functions/constants.ts +++ b/supabase_stream_scripts/src/functions/constants.ts @@ -1,6 +1,6 @@ import { createClient } from "@supabase/supabase-js" -import { IGameData, IMatchInfo, ISceneChange, ISceneNames, IUiData } from "./interfaces" +import { IBuildOrderItem, IGameData, IMatchInfo, ISceneChange, ISceneNames, IUiData, IValidGame } from "./interfaces" export const sc2GameUrl = "http://localhost:6119/game" export const sc2UiUrl = "http://localhost:6119/ui" @@ -12,6 +12,21 @@ export const supabase = createClient( "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InhwbGJ3ZWVha2x5eGl4bHVnZWp1Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2NDUwMzUwMTcsImV4cCI6MTk2MDYxMTAxN30.PPa4MEwdlaSQovk5lyKqIyxsxp7ujYqjlNGMsctho8k" ) export const sc2AccountsDb = process.env.SC2ACCOUNTSDB || "sc2accounts" +export const sc2BuildOrdersDb = process.env.SC2BUILDORDERSDB || "sc2buildorders" + +// Toast options +export const successTheme = { + theme: { + "--toastBackground": "#48BB78", + "--toastBarBackground": "#2F855A", + }, +} +export const errorTheme = { + theme: { + "--toastBackground": "#F56565", + "--toastBarBackground": "#C53030", + }, +} export const races = ["Protoss", "Terran", "Zerg", "Random"] export const servers = ["Europe", "Americas", "Asia", "China"] @@ -41,6 +56,13 @@ export const resetInfo = (): IMatchInfo => { _opponentGamesPlayedThisSeason: -1, } } +export const validateGameFromGameData = (gameData: IGameData): IValidGame => { + if (gameData.players.length !== 2) { + return "other" + } + // Return true if this is a valid 1v1 game + return "1v1" +} export const getCurrentScene = (gameData: IGameData, uiData: IUiData): ISceneNames => { // Check changes: @@ -99,3 +121,34 @@ export const getSceneChange = (oldScene: ISceneNames, newScene: ISceneNames, con } return "unknown" } + +export const formatTime = (timeInSeconds: number): string => { + const minutes = Math.floor(timeInSeconds / 60) + const seconds = Math.floor(timeInSeconds % 60) + const minutesString = `${minutes}` + const secondsString = seconds.toString().padStart(2, "0") + return `${minutesString}:${secondsString}` +} + +export const timeStringToNumber = (timeFormatted: string): number => { + const timeSplit = timeFormatted.split(":") + console.assert(timeSplit.length == 2, timeSplit) + const minutes = parseInt(timeSplit[0]) + const seconds = parseInt(timeSplit[1]) + return minutes * 60 + seconds +} + +export const textToBuildOrder = (buildOrderText: string): IBuildOrderItem[] => { + const lines = buildOrderText.split("\n") + const buildOrder = [] + lines.forEach((line) => { + const timeAndText = line.split(" ") + const time = timeAndText[0] + const text = timeAndText.slice(1).join(" ") + buildOrder.push({ + time: timeStringToNumber(time), + text: text, + }) + }) + return buildOrder +} diff --git a/supabase_stream_scripts/src/functions/interfaces.ts b/supabase_stream_scripts/src/functions/interfaces.ts index a51686a4..e47a78a5 100644 --- a/supabase_stream_scripts/src/functions/interfaces.ts +++ b/supabase_stream_scripts/src/functions/interfaces.ts @@ -94,3 +94,17 @@ export type INephestResponse = { } } } + +export type IBuildOrderItem = { + time: number + text: string +} + +export type IBuildOrderDbRow = { + id: number + enabled: boolean + priority: number + matchup: string + title: string + buildOrder: IBuildOrderItem[] +} diff --git a/supabase_stream_scripts/src/pages/BuildOrder.svelte b/supabase_stream_scripts/src/pages/BuildOrder.svelte new file mode 100644 index 00000000..6b41669e --- /dev/null +++ b/supabase_stream_scripts/src/pages/BuildOrder.svelte @@ -0,0 +1,229 @@ + + + diff --git a/supabase_stream_scripts/src/pages/MatchInfo.svelte b/supabase_stream_scripts/src/pages/MatchInfo.svelte index c1038385..8eae7223 100644 --- a/supabase_stream_scripts/src/pages/MatchInfo.svelte +++ b/supabase_stream_scripts/src/pages/MatchInfo.svelte @@ -15,6 +15,7 @@ supabase, toNephestRace, toNephestServer, + validateGameFromGameData, } from "../functions/constants" import { IGameData, @@ -72,13 +73,6 @@ }) console.log("Found sc2 accounts belonging to streamer:", sc2Accounts) } - let validateGameFromGameData = (gameData: IGameData): IValidGame => { - if (gameData.players.length !== 2) { - return "other" - } - // Return true if this is a valid 1v1 game - return "1v1" - } let pollSc2Api = async () => { if (!running) { // Component was unmounted @@ -101,13 +95,14 @@ // Not a valid 1v1 game (either vs human or computer) return } + // /ui let uiDataResponse = await fetch(sc2UiUrl) if (!uiDataResponse.ok) { // Ui url didnt respond return } let uiData: IUiData = await uiDataResponse.json() - let currenctScene: ISceneNames = getCurrentScene(gameData, uiData) + let currentScene: ISceneNames = getCurrentScene(gameData, uiData) // Find player account let myIndex = -1 @@ -120,13 +115,16 @@ break } } - - let sceneChange: ISceneChange = getSceneChange(runningData.scene, currenctScene, myIndex !== -1) - if (currenctScene === "loading") { + if (myIndex === -1) { + // Account not found in list of accounts + return + } + let sceneChange: ISceneChange = getSceneChange(runningData.scene, currentScene, myIndex !== -1) + if (currentScene === "loading") { // Do nothing when loading return } - runningData.scene = currenctScene + runningData.scene = currentScene if (sceneChange !== "toNewGameFromMenu") { // No new game has been started, don't change anything return @@ -135,11 +133,6 @@ // TODO Hide overlay? return } - - if (myIndex === -1) { - // Account not found in list of accounts - return - } let opponentIndex = 1 - myIndex if (gameData.players[opponentIndex].type == "computer") { diff --git a/supabase_stream_scripts/src/pages/StreamManager.svelte b/supabase_stream_scripts/src/pages/StreamManager.svelte index c068e0cb..96570cb9 100644 --- a/supabase_stream_scripts/src/pages/StreamManager.svelte +++ b/supabase_stream_scripts/src/pages/StreamManager.svelte @@ -1,8 +1,20 @@
@@ -171,6 +265,10 @@
Your match info overlay link
- + + + {/each}
diff --git a/supabase_stream_scripts/src/routes/index.svelte b/supabase_stream_scripts/src/routes/index.svelte index e6c12a7e..83f5f70f 100644 --- a/supabase_stream_scripts/src/routes/index.svelte +++ b/supabase_stream_scripts/src/routes/index.svelte @@ -1,7 +1,9 @@
- handleFilesSelect(e, "1")}>Drop your real replay here + handleFilesSelect(e, 1)}>Drop your real replay here
- handleFilesSelect(e, "2")}>Drop your ideal replay here + handleFilesSelect(e, 2)}>Drop your ideal replay here
Real replay
diff --git a/supabase_stream_scripts/package-lock.json b/supabase_stream_scripts/package-lock.json index b29cd330..69785b0d 100644 --- a/supabase_stream_scripts/package-lock.json +++ b/supabase_stream_scripts/package-lock.json @@ -9,28 +9,28 @@ "version": "0.0.1", "dependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.309", - "@zerodevx/svelte-toast": "^0.7.0", - "svelte": "^3.46.4", - "svelte-check": "^2.4.5", - "svelte-preprocess": "^4.10.3", - "typescript": "^4.5.5" + "@sveltejs/kit": "^1.0.0-next.310", + "@zerodevx/svelte-toast": "^0.7.1", + "svelte": "^3.47.0", + "svelte-check": "^2.6.0", + "svelte-preprocess": "^4.10.5", + "typescript": "^4.6.3" }, "devDependencies": { - "@supabase/supabase-js": "^1.30.4", - "@testing-library/svelte": "^3.1.0", + "@supabase/supabase-js": "^1.33.3", + "@testing-library/svelte": "^3.1.1", "@trivago/prettier-plugin-sort-imports": "^3.2.0", - "@typescript-eslint/eslint-plugin": "^5.12.0", - "@typescript-eslint/parser": "^5.12.0", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", "cross-env": "^7.0.3", - "eslint": "^8.9.0", - "eslint-config-prettier": "^8.4.0", - "eslint-plugin-svelte3": "^3.4.0", + "eslint": "^8.13.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^3.4.1", "fast-check": "^2.24.0", "jest": "^27.5.1", - "npm-check-updates": "^12.3.1", - "prettier": "^2.5.1", - "prettier-plugin-svelte": "^2.6.0", + "npm-check-updates": "^12.5.8", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", "svelte-jester": "^2.3.2", "ts-jest": "^27.1.4" } diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index 399e3b2a..5bf9f675 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -14,31 +14,31 @@ "test": "jest" }, "devDependencies": { - "@supabase/supabase-js": "^1.30.4", - "@testing-library/svelte": "^3.1.0", + "@supabase/supabase-js": "^1.33.3", + "@testing-library/svelte": "^3.1.1", "@trivago/prettier-plugin-sort-imports": "^3.2.0", - "@typescript-eslint/eslint-plugin": "^5.12.0", - "@typescript-eslint/parser": "^5.12.0", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", "cross-env": "^7.0.3", - "eslint": "^8.9.0", - "eslint-config-prettier": "^8.4.0", - "eslint-plugin-svelte3": "^3.4.0", + "eslint": "^8.13.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^3.4.1", "fast-check": "^2.24.0", "jest": "^27.5.1", - "npm-check-updates": "^12.3.1", - "prettier": "^2.5.1", - "prettier-plugin-svelte": "^2.6.0", + "npm-check-updates": "^12.5.8", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", "svelte-jester": "^2.3.2", "ts-jest": "^27.1.4" }, "dependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.309", - "@zerodevx/svelte-toast": "^0.7.0", - "svelte": "^3.46.4", - "svelte-check": "^2.4.5", - "svelte-preprocess": "^4.10.3", - "typescript": "^4.5.5" + "@sveltejs/kit": "^1.0.0-next.310", + "@zerodevx/svelte-toast": "^0.7.1", + "svelte": "^3.47.0", + "svelte-check": "^2.6.0", + "svelte-preprocess": "^4.10.5", + "typescript": "^4.6.3" }, "type": "module" } diff --git a/svelte_frontend/package-lock.json b/svelte_frontend/package-lock.json index a37e5a68..554dc8df 100644 --- a/svelte_frontend/package-lock.json +++ b/svelte_frontend/package-lock.json @@ -9,24 +9,24 @@ "version": "0.0.1", "dependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.309", - "moment": "^2.29.1", - "svelte": "^3.46.3", - "svelte-check": "^2.4.0", - "svelte-preprocess": "^4.10.2", - "typescript": "^4.5.5" + "@sveltejs/kit": "^1.0.0-next.310", + "moment": "^2.29.2", + "svelte": "^3.47.0", + "svelte-check": "^2.6.0", + "svelte-preprocess": "^4.10.5", + "typescript": "^4.6.3" }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^3.1.1", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", + "@trivago/prettier-plugin-sort-imports": "^3.2.0", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", "cross-env": "^7.0.3", - "eslint": "^8.8.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-svelte3": "^3.4.0", - "npm-check-updates": "^12.2.1", - "prettier": "^2.5.1", - "prettier-plugin-svelte": "^2.6.0" + "eslint": "^8.13.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^3.4.1", + "npm-check-updates": "^12.5.8", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0" } }, "node_modules/@babel/code-frame": { diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index a9669311..8078c839 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -13,25 +13,25 @@ "format": "prettier --write './**/*.{svelte,ts}'" }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^3.1.1", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", + "@trivago/prettier-plugin-sort-imports": "^3.2.0", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", "cross-env": "^7.0.3", - "eslint": "^8.8.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-svelte3": "^3.4.0", - "npm-check-updates": "^12.2.1", - "prettier": "^2.5.1", - "prettier-plugin-svelte": "^2.6.0" + "eslint": "^8.13.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^3.4.1", + "npm-check-updates": "^12.5.8", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0" }, "dependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.309", - "moment": "^2.29.1", - "svelte": "^3.46.3", - "svelte-check": "^2.4.0", - "svelte-preprocess": "^4.10.2", - "typescript": "^4.5.5" + "@sveltejs/kit": "^1.0.0-next.310", + "moment": "^2.29.2", + "svelte": "^3.47.0", + "svelte-check": "^2.6.0", + "svelte-preprocess": "^4.10.5", + "typescript": "^4.6.3" }, "type": "module" } From 0bfbd7015f4aedf90afee8f5dfbc9fde1d944e91 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:01:20 +0200 Subject: [PATCH 028/391] Add linting, fix tests --- .../test_supabase_stream_scripts.yml | 5 ++++ .pre-commit-config.yaml | 25 +++++++++++++++++-- .../test/endpoints_test/test_replay_parser.py | 21 ---------------- replay_comparer/package.json | 2 +- .../src/components/ReplayComparison.svelte | 2 +- supabase_stream_scripts/package.json | 2 +- .../src/functions/constants.test.ts | 2 +- .../src/pages/BuildOrder.svelte | 3 ++- .../src/pages/MatchInfo.svelte | 4 +-- .../src/pages/StreamManager.test.ts | 12 +++------ svelte_frontend/package.json | 2 +- svelte_frontend/src/components/Button.svelte | 6 +++-- .../src/components/DevComponentsHeader.svelte | 4 ++- .../src/components/Inputfield.svelte | 20 ++++++++++----- .../src/components/TournamentGroup.svelte | 2 +- .../src/pages/BrowserStorage.svelte | 4 +-- 16 files changed, 64 insertions(+), 52 deletions(-) delete mode 100644 fastapi_server/test/endpoints_test/test_replay_parser.py diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index b90ed31d..01c3e21e 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -41,6 +41,11 @@ jobs: cd ${{ env.SUBDIRECTORY }} npm install + - name: Create .svelte-kit subdirectory + run: | + cd ${{ env.SUBDIRECTORY }} + npm run build + - name: Run tests run: | cd ${{ env.SUBDIRECTORY }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9fb6f683..2e1b2c97 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -128,6 +128,27 @@ repos: entry: bash -c "cd replay_comparer && npm run format" pass_filenames: false + - id: lint_svelte_frontend + name: lint_svelte_frontend + stages: [commit] + language: system + entry: bash -c "cd svelte_frontend && npm run lint" + pass_filenames: false + + - id: lint_supabase_stream_scripts + name: lint_supabase_stream_scripts + stages: [commit] + language: system + entry: bash -c "cd supabase_stream_scripts && npm run lint" + pass_filenames: false + + - id: lint_replay_comparer + name: lint_replay_comparer + stages: [commit] + language: system + entry: bash -c "cd replay_comparer && npm run lint" + pass_filenames: false + - id: pylint name: pylint stages: [commit] @@ -160,12 +181,12 @@ repos: entry: poetry run pytest fastapi_server pass_filenames: false - # Run supabase stream scripts tests + # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) - id: test_supabase_stream_scripts name: test_supabase_stream_scripts stages: [commit] language: system - entry: bash -c "cd supabase_stream_scripts && npm run test" + entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" pass_filenames: false # Run svelte e2e tests diff --git a/fastapi_server/test/endpoints_test/test_replay_parser.py b/fastapi_server/test/endpoints_test/test_replay_parser.py deleted file mode 100644 index e29ceedd..00000000 --- a/fastapi_server/test/endpoints_test/test_replay_parser.py +++ /dev/null @@ -1,21 +0,0 @@ -from pathlib import Path - -from starlette.testclient import TestClient - -from fastapi_server.test.base_test import BaseTest - -TEST_REPLAY = Path(__file__).parent / 'replays' / 'TvZ Standard Bio.SC2Replay' - - -class TestReplayParser(BaseTest): - - def test_parse_single_replay(self): - assert TEST_REPLAY.is_file() - client: TestClient = self.method_client - with TEST_REPLAY.open('rb') as f: - files = [('replay_file', f)] - second = 22.4 - response = client.post('/parse_replay', files=files, data={'replay_tick': second * 10}) - assert response.status_code == 200 - reponse_data = response.json() - assert reponse_data['player1']['name'] == 'BuRny' diff --git a/replay_comparer/package.json b/replay_comparer/package.json index e6eab901..5e7729d6 100644 --- a/replay_comparer/package.json +++ b/replay_comparer/package.json @@ -8,7 +8,7 @@ "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "npm run format && eslint src", + "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "format": "prettier --write './**/*.{svelte,ts}'" diff --git a/replay_comparer/src/components/ReplayComparison.svelte b/replay_comparer/src/components/ReplayComparison.svelte index 74711235..0fddcc31 100644 --- a/replay_comparer/src/components/ReplayComparison.svelte +++ b/replay_comparer/src/components/ReplayComparison.svelte @@ -103,7 +103,7 @@ return [gameloop, item[1][timelineSelected], item[2][timelineSelected]] }), zoneAxis: "x", - zones: mergedTimelines.map((item, index) => { + zones: mergedTimelines.map((item) => { let gameloop = Math.max(item[1].gameloop, item[2].gameloop) let betterThanIdeal = item[1][timelineSelected] > item[2][timelineSelected] let fillColor = betterThanIdeal ? "#C0D890" : "#ED4337" diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index 5bf9f675..0a98b385 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -7,7 +7,7 @@ "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "npm run format && eslint src", + "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "format": "prettier --write './**/*.{svelte,ts}'", diff --git a/supabase_stream_scripts/src/functions/constants.test.ts b/supabase_stream_scripts/src/functions/constants.test.ts index 7f4fb53c..07008c1c 100644 --- a/supabase_stream_scripts/src/functions/constants.test.ts +++ b/supabase_stream_scripts/src/functions/constants.test.ts @@ -2,7 +2,7 @@ import { expect, test } from "@jest/globals" import fc from "fast-check" import { getCurrentScene, getSceneChange } from "./constants" -import { ISceneChange, ISceneNames } from "./interfaces" +import type { ISceneNames } from "./interfaces" test("get current scene - game", () => { const gameData = { isReplay: false, displayTime: 5, players: [] } diff --git a/supabase_stream_scripts/src/pages/BuildOrder.svelte b/supabase_stream_scripts/src/pages/BuildOrder.svelte index a54768c3..be666157 100644 --- a/supabase_stream_scripts/src/pages/BuildOrder.svelte +++ b/supabase_stream_scripts/src/pages/BuildOrder.svelte @@ -89,11 +89,12 @@ }) } let getMyAccounts = async () => { - const { data, error } = await supabase + const { data } = await supabase .from(sc2AccountsDb) .select() .match({ twitchname: params.twitchUser, enabled: true, server: params.server }) .order("id") + // TODO check for error? sc2Accounts = [] data.forEach((row: ISC2Account) => { sc2Accounts.push({ diff --git a/supabase_stream_scripts/src/pages/MatchInfo.svelte b/supabase_stream_scripts/src/pages/MatchInfo.svelte index 57e9d42d..aa8676d2 100644 --- a/supabase_stream_scripts/src/pages/MatchInfo.svelte +++ b/supabase_stream_scripts/src/pages/MatchInfo.svelte @@ -27,7 +27,6 @@ ISceneChange, ISceneNames, IUiData, - IValidGame, } from "../functions/interfaces" const dev = (process.env.DEV && process.env.DEV === "true") || false @@ -55,11 +54,12 @@ running = false }) let getMyAccounts = async () => { - const { data, error } = await supabase + const { data } = await supabase .from(sc2AccountsDb) .select() .match({ twitchname: params.twitchUser, enabled: true, server: params.server }) .order("id") + // TODO check for error sc2Accounts = [] data.forEach((row: ISC2Account) => { sc2Accounts.push({ diff --git a/supabase_stream_scripts/src/pages/StreamManager.test.ts b/supabase_stream_scripts/src/pages/StreamManager.test.ts index 2ddbad7c..5e4ece37 100644 --- a/supabase_stream_scripts/src/pages/StreamManager.test.ts +++ b/supabase_stream_scripts/src/pages/StreamManager.test.ts @@ -1,13 +1,9 @@ import { beforeAll, describe, expect, jest, test } from "@jest/globals" -import { fireEvent, getByTestId, queryByAttribute, render, screen, waitFor } from "@testing-library/svelte" -import { onMount, tick } from "svelte" -import { SvelteComponentDev } from "svelte/internal" +import { render, screen } from "@testing-library/svelte" import StreamManager from "./StreamManager.svelte" describe("Render stream manager", () => { - const log = console.log - beforeAll(() => { // Supress log output console.log = jest.fn() @@ -19,7 +15,7 @@ describe("Render stream manager", () => { }) test("Visible elements on page load", async () => { - render(StreamManager as unknown as typeof SvelteComponentDev) + render(StreamManager) const instantAvailableTexts = ["You are not logged in", "Log in with twitch"] instantAvailableTexts.forEach((text) => { const node = screen.getByText(text) @@ -30,8 +26,6 @@ describe("Render stream manager", () => { }) describe("Render stream manager login as LOCALTEST", () => { - const log = console.log - beforeAll(() => { // Supress log output console.log = jest.fn() @@ -45,7 +39,7 @@ describe("Render stream manager login as LOCALTEST", () => { SC2ACCOUNTSDB: "sc2accounts_dev", SC2BUILDORDERSDB: "sc2buildorders_dev", } - const { getByText } = render(StreamManager as unknown as typeof SvelteComponentDev) + render(StreamManager) const instantAvailableTexts = ["You are logged in as LOCALTEST", "Log out of twitch"] instantAvailableTexts.forEach((text) => { const node = screen.getByText(text) diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 8078c839..341d168a 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -7,7 +7,7 @@ "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "npm run format && eslint src", + "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "format": "prettier --write './**/*.{svelte,ts}'" diff --git a/svelte_frontend/src/components/Button.svelte b/svelte_frontend/src/components/Button.svelte index 91408604..87744b67 100644 --- a/svelte_frontend/src/components/Button.svelte +++ b/svelte_frontend/src/components/Button.svelte @@ -1,6 +1,8 @@ - + diff --git a/svelte_frontend/src/components/DevComponentsHeader.svelte b/svelte_frontend/src/components/DevComponentsHeader.svelte index e828cf7e..fa05f883 100644 --- a/svelte_frontend/src/components/DevComponentsHeader.svelte +++ b/svelte_frontend/src/components/DevComponentsHeader.svelte @@ -1,5 +1,7 @@
diff --git a/svelte_frontend/src/components/Inputfield.svelte b/svelte_frontend/src/components/Inputfield.svelte index f83b0609..423cb994 100644 --- a/svelte_frontend/src/components/Inputfield.svelte +++ b/svelte_frontend/src/components/Inputfield.svelte @@ -2,16 +2,24 @@ export let descriptionText = "Description text" export let bindVariable = "Example text" export let inputType = "text" - export let onChangeFunction = async () => {} + export let onChangeFunction = () => { + console.log("On change called") + } -
@@ -65,7 +65,7 @@
From 9f721246209360250838ba38de8998760f57a57d Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:04:44 +0200 Subject: [PATCH 029/391] Remove tsconfig.json instead of build --- .github/workflows/test_supabase_stream_scripts.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 01c3e21e..c84c1f97 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -41,12 +41,8 @@ jobs: cd ${{ env.SUBDIRECTORY }} npm install - - name: Create .svelte-kit subdirectory - run: | - cd ${{ env.SUBDIRECTORY }} - npm run build - - name: Run tests run: | cd ${{ env.SUBDIRECTORY }} + rm tsconfig.json npm run test From 525d965808771ccdfa2554a262754a19ec050263 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:06:44 +0200 Subject: [PATCH 030/391] Run build conditionally based on node version --- .github/workflows/test_supabase_stream_scripts.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index c84c1f97..9ee3e68c 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -41,6 +41,12 @@ jobs: cd ${{ env.SUBDIRECTORY }} npm install + - name: Create .svelte-kit subdirectory + run: | + cd ${{ env.SUBDIRECTORY }} + npm run build + if: contains(["14", "16", "18"], ${{ matrix.node }}) + - name: Run tests run: | cd ${{ env.SUBDIRECTORY }} From 921a5b005bb5b5fcbda6b4b669c656fbe02ef566 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:09:00 +0200 Subject: [PATCH 031/391] Fix if statement --- .github/workflows/test_supabase_stream_scripts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 9ee3e68c..8654c3b0 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -45,7 +45,7 @@ jobs: run: | cd ${{ env.SUBDIRECTORY }} npm run build - if: contains(["14", "16", "18"], ${{ matrix.node }}) + if: ${{ matrix.node }} != "12" - name: Run tests run: | From 154447a4b075585ec267a2324fe81781ad059aae Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:11:47 +0200 Subject: [PATCH 032/391] Fix if statement --- .github/workflows/test_supabase_stream_scripts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 8654c3b0..c1b0140c 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -41,11 +41,11 @@ jobs: cd ${{ env.SUBDIRECTORY }} npm install - - name: Create .svelte-kit subdirectory + - name: Run build command run: | cd ${{ env.SUBDIRECTORY }} npm run build - if: ${{ matrix.node }} != "12" + if: ${{ matrix.node != '12' }} - name: Run tests run: | From b5efc6edcf1a4461ad6788b1d53724bb817a7f67 Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:15:01 +0200 Subject: [PATCH 033/391] Add build statement to replay comparer and svelte frontend --- .github/workflows/test_replay_comparer.yml | 55 ++++++++++++++++++++++ .github/workflows/test_svelte_frontend.yml | 6 +++ 2 files changed, 61 insertions(+) create mode 100644 .github/workflows/test_replay_comparer.yml diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml new file mode 100644 index 00000000..603ced5d --- /dev/null +++ b/.github/workflows/test_replay_comparer.yml @@ -0,0 +1,55 @@ +name: test_replay_comparer + + +on: + push: + paths: + - burny_common/** + - fastapi_server/** + - poetry.lock + - replay_comparer/** + - .github/workflows/test_replay_comparer.yml + pull_request: + branches: + - master + - develop + +jobs: + test_frontend: + env: + SUBDIRECTORY: replay_comparer + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + node: ['12', '14', '16'] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node ${{ matrix.node }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Cache npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + + - name: Install npm dependencies + run: | + cd ${{ env.SUBDIRECTORY }} + npm install + + - name: Run build command + run: | + cd ${{ env.SUBDIRECTORY }} + npm run build + if: ${{ matrix.node != '12' }} + + # - name: Run tests + # run: | + # npm run test diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 7458ee64..ea98931f 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -44,6 +44,12 @@ jobs: cd ${{ env.SUBDIRECTORY }} npm install + - name: Run build command + run: | + cd ${{ env.SUBDIRECTORY }} + npm run build + if: ${{ matrix.node != '12' }} + # - name: Run tests # run: | # npm run test From bec92a882be9d954e2dfe5fdc65de210caf0c76a Mon Sep 17 00:00:00 2001 From: BurnySc2 Date: Sat, 9 Apr 2022 19:16:11 +0200 Subject: [PATCH 034/391] Rename jobs --- .github/workflows/test_replay_comparer.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index 603ced5d..5154ea51 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -15,7 +15,7 @@ on: - develop jobs: - test_frontend: + test_replay_comparer: env: SUBDIRECTORY: replay_comparer strategy: diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index ea98931f..ca57e438 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -15,7 +15,7 @@ on: - develop jobs: - test_frontend: + test_svelte_frontend: env: SUBDIRECTORY: svelte_frontend strategy: From 8446daf0517523e26a9e1456bc25ad06d3daa31c Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 14 Apr 2022 21:51:08 +0200 Subject: [PATCH 035/391] Use routing for svelte_frontend --- .pre-commit-config.yaml | 4 +- svelte_frontend/package-lock.json | 1116 ++++++++++------- svelte_frontend/src/components/Headers.svelte | 13 + svelte_frontend/src/pages/About.svelte | 14 - .../src/pages/BrowserStorage.svelte | 72 -- svelte_frontend/src/routes/about.svelte | 19 + .../src/routes/browserstorage.svelte | 73 ++ svelte_frontend/src/routes/index.svelte | 85 +- .../normalchat.svelte} | 3 + .../TodoPage.svelte => routes/todo.svelte} | 6 +- .../[somevalue1]-[someothervalue2].svelte | 15 + 11 files changed, 819 insertions(+), 601 deletions(-) create mode 100644 svelte_frontend/src/components/Headers.svelte delete mode 100644 svelte_frontend/src/pages/About.svelte delete mode 100644 svelte_frontend/src/pages/BrowserStorage.svelte create mode 100644 svelte_frontend/src/routes/about.svelte create mode 100644 svelte_frontend/src/routes/browserstorage.svelte rename svelte_frontend/src/{pages/NormalChat.svelte => routes/normalchat.svelte} (99%) rename svelte_frontend/src/{pages/TodoPage.svelte => routes/todo.svelte} (97%) create mode 100644 svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e1b2c97..ef8f880e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: # Check github action workflow files - repo: https://github.com/sirosen/check-jsonschema - rev: 0.3.2 + rev: 0.14.3 hooks: - id: check-github-workflows @@ -45,7 +45,7 @@ repos: # Remove unused imports - repo: https://github.com/hadialqattan/pycln - rev: v1.0.3 + rev: v1.2.5 hooks: - id: pycln args: [--config=pyproject.toml] diff --git a/svelte_frontend/package-lock.json b/svelte_frontend/package-lock.json index 554dc8df..e990b56d 100644 --- a/svelte_frontend/package-lock.json +++ b/svelte_frontend/package-lock.json @@ -631,19 +631,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@npmcli/git": { @@ -667,18 +679,30 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@npmcli/installed-package-contents": { @@ -747,9 +771,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -776,9 +800,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -865,9 +889,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "node_modules/@types/pug": { "version": "2.0.6", @@ -883,14 +907,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -915,30 +939,42 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" }, "engines": { @@ -958,13 +994,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -975,12 +1011,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1001,9 +1037,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1014,13 +1050,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1040,31 +1076,43 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1080,12 +1128,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1431,19 +1479,31 @@ "semver": "^7.0.0" } }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/builtins/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/cacache": { @@ -1538,9 +1598,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true, "funding": [ { @@ -1902,9 +1962,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "node_modules/emoji-regex": { @@ -1953,9 +2013,9 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "node_modules/esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -1964,32 +2024,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "node_modules/esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "cpu": [ "x64" ], @@ -2002,9 +2062,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "cpu": [ "arm64" ], @@ -2017,9 +2077,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "cpu": [ "x64" ], @@ -2032,9 +2092,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "cpu": [ "arm64" ], @@ -2047,9 +2107,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "cpu": [ "x64" ], @@ -2062,9 +2122,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "cpu": [ "arm64" ], @@ -2077,9 +2137,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "cpu": [ "ia32" ], @@ -2092,9 +2152,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "cpu": [ "x64" ], @@ -2107,9 +2167,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "cpu": [ "arm" ], @@ -2122,9 +2182,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "cpu": [ "arm64" ], @@ -2137,9 +2197,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "cpu": [ "mips64el" ], @@ -2152,9 +2212,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "cpu": [ "ppc64" ], @@ -2167,9 +2227,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "cpu": [ "riscv64" ], @@ -2182,9 +2242,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "cpu": [ "s390x" ], @@ -2197,9 +2257,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "cpu": [ "x64" ], @@ -2212,9 +2272,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "cpu": [ "x64" ], @@ -2227,9 +2287,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "cpu": [ "x64" ], @@ -2242,9 +2302,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "cpu": [ "ia32" ], @@ -2257,9 +2317,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "cpu": [ "x64" ], @@ -2272,9 +2332,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "cpu": [ "arm64" ], @@ -3050,9 +3110,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -3593,9 +3653,9 @@ } }, "node_modules/lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true, "engines": { "node": ">=12" @@ -3890,25 +3950,37 @@ "node": "^12.22 || ^14.13 || >=16" } }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "node_modules/nopt": { @@ -3941,19 +4013,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/normalize-path": { @@ -3983,9 +4067,9 @@ } }, "node_modules/npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -4093,6 +4177,18 @@ "node": ">=8" } }, + "node_modules/npm-check-updates/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -4106,18 +4202,18 @@ } }, "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-check-updates/node_modules/supports-color": { @@ -4144,19 +4240,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-install-checks/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-normalize-package-bin": { @@ -4179,19 +4287,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-packlist": { @@ -4227,25 +4347,37 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "dependencies": { "make-fetch-happen": "^10.0.6", @@ -5300,9 +5432,9 @@ } }, "node_modules/svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "dependencies": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -5340,9 +5472,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "hasInstallScript": true, "dependencies": { "@types/pug": "^2.0.4", @@ -5655,19 +5787,31 @@ "node": ">=8" } }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/update-notifier/node_modules/supports-color": { @@ -5738,9 +5882,9 @@ } }, "node_modules/vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "dependencies": { "esbuild": "^0.14.27", "postcss": "^8.4.12", @@ -6403,13 +6547,22 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -6432,12 +6585,23 @@ }, "dependencies": { "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -6490,9 +6654,9 @@ } }, "@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "requires": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -6513,9 +6677,9 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -6571,9 +6735,9 @@ "dev": true }, "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "@types/pug": { "version": "2.0.6", @@ -6589,14 +6753,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -6605,64 +6769,73 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" } }, "@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -6670,38 +6843,47 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -6954,13 +7136,22 @@ "semver": "^7.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -7035,9 +7226,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true }, "chalk": { @@ -7303,9 +7494,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "emoji-regex": { @@ -7351,150 +7542,150 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", - "requires": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "requires": { + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "optional": true }, "escalade": { @@ -8072,9 +8263,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -8496,9 +8687,9 @@ "dev": true }, "lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true }, "magic-string": { @@ -8713,21 +8904,30 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "nopt": { @@ -8751,13 +8951,22 @@ "validate-npm-package-license": "^3.0.4" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8783,9 +8992,9 @@ } }, "npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -8868,6 +9077,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -8878,12 +9096,12 @@ } }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } }, "supports-color": { @@ -8906,13 +9124,22 @@ "semver": "^7.1.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8934,13 +9161,22 @@ "validate-npm-package-name": "^4.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8969,21 +9205,30 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -9741,9 +9986,9 @@ "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==" }, "svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "requires": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -9769,9 +10014,9 @@ "requires": {} }, "svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "requires": { "@types/pug": "^2.0.4", "@types/sass": "^1.16.0", @@ -9973,13 +10218,22 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } }, "supports-color": { @@ -10043,9 +10297,9 @@ } }, "vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "requires": { "esbuild": "^0.14.27", "fsevents": "~2.3.2", diff --git a/svelte_frontend/src/components/Headers.svelte b/svelte_frontend/src/components/Headers.svelte new file mode 100644 index 00000000..60828c25 --- /dev/null +++ b/svelte_frontend/src/components/Headers.svelte @@ -0,0 +1,13 @@ + + +
+ + + + + + +
diff --git a/svelte_frontend/src/pages/About.svelte b/svelte_frontend/src/pages/About.svelte deleted file mode 100644 index 6889d1d1..00000000 --- a/svelte_frontend/src/pages/About.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -

This is my about page! Here I display features of svelte that I have implemented

- diff --git a/svelte_frontend/src/pages/BrowserStorage.svelte b/svelte_frontend/src/pages/BrowserStorage.svelte deleted file mode 100644 index 1896a644..00000000 --- a/svelte_frontend/src/pages/BrowserStorage.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - -
-
-
Local Storage
-
{localStorageValue}
- - - -
-
-
Session Storage
-
{sessionStorageValue}
- - - -
-
diff --git a/svelte_frontend/src/routes/about.svelte b/svelte_frontend/src/routes/about.svelte new file mode 100644 index 00000000..553cee67 --- /dev/null +++ b/svelte_frontend/src/routes/about.svelte @@ -0,0 +1,19 @@ + + +
+ +

This is my about page! Here I display features of svelte that I have implemented

+ +
diff --git a/svelte_frontend/src/routes/browserstorage.svelte b/svelte_frontend/src/routes/browserstorage.svelte new file mode 100644 index 00000000..417bad9e --- /dev/null +++ b/svelte_frontend/src/routes/browserstorage.svelte @@ -0,0 +1,73 @@ + + + +
+
Local Storage
+
{localStorageValue}
+ + + +
+
+
Session Storage
+
{sessionStorageValue}
+ + + +
diff --git a/svelte_frontend/src/routes/index.svelte b/svelte_frontend/src/routes/index.svelte index 9a6bbec9..b7d44c8d 100644 --- a/svelte_frontend/src/routes/index.svelte +++ b/svelte_frontend/src/routes/index.svelte @@ -1,85 +1,10 @@ -{#if mounted} -
- {#if SHOWCOMPONENTS} - - - {:else} -
- - - - - - {#if dev} - - - {/if} -
- {/if} +
+ - {#if url === "/"} - - {:else if url === "/about"} - - {:else if url === "/chat"} - - {:else if url === "/todo"} - - {:else if url === "/browserstorage"} - - {:else if url === ""} -
Loading...
- {:else if SHOWCOMPONENTS} - - - {:else} -
You seem to be lost!
- {/if} -
-{/if} + +
diff --git a/svelte_frontend/src/pages/NormalChat.svelte b/svelte_frontend/src/routes/normalchat.svelte similarity index 99% rename from svelte_frontend/src/pages/NormalChat.svelte rename to svelte_frontend/src/routes/normalchat.svelte index d27593cc..1c07fc76 100644 --- a/svelte_frontend/src/pages/NormalChat.svelte +++ b/svelte_frontend/src/routes/normalchat.svelte @@ -2,6 +2,8 @@ import moment from "moment" import { onDestroy, onMount } from "svelte" + import Headers from "../components/Headers.svelte" + let componentMounted = false // Accepted username by server @@ -149,6 +151,7 @@ } + {#if userName === ""}
diff --git a/svelte_frontend/src/pages/TodoPage.svelte b/svelte_frontend/src/routes/todo.svelte similarity index 97% rename from svelte_frontend/src/pages/TodoPage.svelte rename to svelte_frontend/src/routes/todo.svelte index 8d72dbd0..fcfc1275 100644 --- a/svelte_frontend/src/pages/TodoPage.svelte +++ b/svelte_frontend/src/routes/todo.svelte @@ -1,6 +1,7 @@ -
+ +
{/each} --> -
+
diff --git a/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte new file mode 100644 index 00000000..538ef365 --- /dev/null +++ b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte @@ -0,0 +1,15 @@ + + +
+ Hi! You are on page "/todo/{value1}-{value2}" +
From fa0d8d221d60207c227672f8e27167221e814c5a Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 14 Apr 2022 21:56:14 +0200 Subject: [PATCH 036/391] Put localstorage in onMount --- .../src/routes/browserstorage.svelte | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/svelte_frontend/src/routes/browserstorage.svelte b/svelte_frontend/src/routes/browserstorage.svelte index 417bad9e..54628655 100644 --- a/svelte_frontend/src/routes/browserstorage.svelte +++ b/svelte_frontend/src/routes/browserstorage.svelte @@ -1,4 +1,5 @@ From bdd7755cb15878f455bd2fb14388f5057eaff9b4 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 14 Apr 2022 21:58:49 +0200 Subject: [PATCH 037/391] Add headers to slug page --- .../src/routes/todo/[somevalue1]-[someothervalue2].svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte index 538ef365..d6c544b5 100644 --- a/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte +++ b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte @@ -1,6 +1,8 @@ +
Hi! You are on page "/todo/{value1}-{value2}"
From afd63b77891fb25a52f9c2dadda0e627966f00ae Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 14 Apr 2022 22:27:14 +0200 Subject: [PATCH 038/391] Fix value2 --- .../src/routes/todo/[somevalue1]-[someothervalue2].svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte index d6c544b5..5e754a57 100644 --- a/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte +++ b/svelte_frontend/src/routes/todo/[somevalue1]-[someothervalue2].svelte @@ -8,7 +8,7 @@ page.subscribe(({ params }) => { value1 = params.somevalue1 - value1 = params.someothervalue2 + value2 = params.someothervalue2 }) From 5937031e915ab1b787ff29fab92c85fd470888ac Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 19 Apr 2022 21:02:19 +0200 Subject: [PATCH 039/391] Add bored games --- .github/workflows/test_bored_games.yml | 53 + .pre-commit-config.yaml | 21 + bored_games/.eslintrc.cjs | 20 + bored_games/.gitignore | 8 + bored_games/.npmrc | 1 + bored_games/.prettierrc | 12 + bored_games/README.md | 38 + bored_games/package-lock.json | 8942 ++++++++++++++++++++++++ bored_games/package.json | 39 + bored_games/playwright.config.ts | 10 + bored_games/src/app.d.ts | 10 + bored_games/src/app.html | 14 + bored_games/src/routes/index.svelte | 2 + bored_games/static/favicon.png | Bin 0 -> 1571 bytes bored_games/svelte.config.js | 15 + bored_games/tests/test.ts | 6 + bored_games/tsconfig.json | 17 + 17 files changed, 9208 insertions(+) create mode 100644 .github/workflows/test_bored_games.yml create mode 100644 bored_games/.eslintrc.cjs create mode 100644 bored_games/.gitignore create mode 100644 bored_games/.npmrc create mode 100644 bored_games/.prettierrc create mode 100644 bored_games/README.md create mode 100644 bored_games/package-lock.json create mode 100644 bored_games/package.json create mode 100644 bored_games/playwright.config.ts create mode 100644 bored_games/src/app.d.ts create mode 100644 bored_games/src/app.html create mode 100644 bored_games/src/routes/index.svelte create mode 100644 bored_games/static/favicon.png create mode 100644 bored_games/svelte.config.js create mode 100644 bored_games/tests/test.ts create mode 100644 bored_games/tsconfig.json diff --git a/.github/workflows/test_bored_games.yml b/.github/workflows/test_bored_games.yml new file mode 100644 index 00000000..d9ac9349 --- /dev/null +++ b/.github/workflows/test_bored_games.yml @@ -0,0 +1,53 @@ +name: test_bored_games + + +on: + push: + paths: + - bored_games/** + - .github/workflows/test_bored_games.yml + pull_request: + branches: + - master + - develop + +jobs: + test_supabase_stream_scripts: + env: + SUBDIRECTORY: bored_games + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + node: ['12', '14', '16'] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node ${{ matrix.node }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Cache npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + + - name: Install npm dependencies + run: | + cd ${{ env.SUBDIRECTORY }} + npm install + + - name: Run build command + run: | + cd ${{ env.SUBDIRECTORY }} + npm run build + if: ${{ matrix.node != '12' }} + + - name: Run tests + run: | + cd ${{ env.SUBDIRECTORY }} + npm run test diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ef8f880e..e0015322 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -128,6 +128,13 @@ repos: entry: bash -c "cd replay_comparer && npm run format" pass_filenames: false + - id: format_bored_games + name: format_bored_games + stages: [commit] + language: system + entry: bash -c "cd bored_games && npm run format" + pass_filenames: false + - id: lint_svelte_frontend name: lint_svelte_frontend stages: [commit] @@ -149,6 +156,13 @@ repos: entry: bash -c "cd replay_comparer && npm run lint" pass_filenames: false + - id: lint_bored_games + name: lint_bored_games + stages: [commit] + language: system + entry: bash -c "cd bored_games && npm run lint" + pass_filenames: false + - id: pylint name: pylint stages: [commit] @@ -189,6 +203,13 @@ repos: entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" pass_filenames: false + - id: test_bored_games + name: test_bored_games + stages: [commit] + language: system + entry: bash -c "cd bored_games && npm run test" + pass_filenames: false + # Run svelte e2e tests - id: svelte_e2e_tests name: svelte_e2e_tests diff --git a/bored_games/.eslintrc.cjs b/bored_games/.eslintrc.cjs new file mode 100644 index 00000000..81900ca2 --- /dev/null +++ b/bored_games/.eslintrc.cjs @@ -0,0 +1,20 @@ +module.exports = { + root: true, + parser: "@typescript-eslint/parser", + extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], + plugins: ["svelte3", "@typescript-eslint"], + ignorePatterns: ["*.cjs"], + overrides: [{ files: ["*.svelte"], processor: "svelte3/svelte3" }], + settings: { + "svelte3/typescript": () => require("typescript"), + }, + parserOptions: { + sourceType: "module", + ecmaVersion: 2020, + }, + env: { + browser: true, + es2017: true, + node: true, + }, +} diff --git a/bored_games/.gitignore b/bored_games/.gitignore new file mode 100644 index 00000000..f4401a32 --- /dev/null +++ b/bored_games/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example diff --git a/bored_games/.npmrc b/bored_games/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/bored_games/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/bored_games/.prettierrc b/bored_games/.prettierrc new file mode 100644 index 00000000..854968fe --- /dev/null +++ b/bored_games/.prettierrc @@ -0,0 +1,12 @@ +{ + "trailingComma": "es5", + "tabWidth": 4, + "semi": false, + "singleQuote": false, + "arrowParens": "always", + "printWidth": 120, + "useTabs": false, + "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true +} diff --git a/bored_games/README.md b/bored_games/README.md new file mode 100644 index 00000000..374efec4 --- /dev/null +++ b/bored_games/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm init svelte + +# create a new project in my-app +npm init svelte my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/bored_games/package-lock.json b/bored_games/package-lock.json new file mode 100644 index 00000000..1b0351dc --- /dev/null +++ b/bored_games/package-lock.json @@ -0,0 +1,8942 @@ +{ + "name": "my-app", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "0.0.1", + "devDependencies": { + "@playwright/test": "^1.21.0", + "@supabase/supabase-js": "^1.35.0", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.29", + "@sveltejs/kit": "next", + "@typescript-eslint/eslint-plugin": "^5.10.1", + "@typescript-eslint/parser": "^5.10.1", + "cross-env": "^7.0.3", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^3.2.1", + "prettier": "^2.5.1", + "prettier-plugin-svelte": "^2.5.0", + "svelte": "^3.44.0", + "svelte-check": "^2.2.6", + "svelte-preprocess": "^4.10.1", + "tslib": "^2.3.1", + "typescript": "~4.6.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/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, + "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/@jest/types/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/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 + }, + "node_modules/@jest/types/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "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, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@playwright/test": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.21.1.tgz", + "integrity": "sha512-XkkTXl5gvEm4fciqeHvY5IuSS/OfQef0MO6RpBNmtm6EuYSdtUvP/sDVuWRKsDqyVdB3WSA0az7iSw79f2//JQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.16.7", + "@babel/core": "7.16.12", + "@babel/helper-plugin-utils": "7.16.7", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-dynamic-import": "7.16.7", + "@babel/plugin-proposal-export-namespace-from": "7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.16.7", + "@babel/plugin-proposal-numeric-separator": "7.16.7", + "@babel/plugin-proposal-optional-chaining": "7.16.7", + "@babel/plugin-proposal-private-methods": "7.16.11", + "@babel/plugin-proposal-private-property-in-object": "7.16.7", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.16.8", + "@babel/preset-typescript": "7.16.7", + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "expect": "27.2.5", + "jest-matcher-utils": "27.2.5", + "json5": "2.2.1", + "mime": "3.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "open": "8.4.0", + "pirates": "4.0.4", + "playwright-core": "1.21.1", + "rimraf": "3.0.2", + "source-map-support": "0.4.18", + "stack-utils": "2.0.5", + "yazl": "2.5.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.3.tgz", + "integrity": "sha512-35vO9niHRtzGe1QSvXKdOfvGPiX2KC44dGpWU6y0/gZCfTIgog/soU9HqABzQC/maVowO3hGLWfez5aN0MKfow==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@supabase/gotrue-js": { + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.13.tgz", + "integrity": "sha512-Ylus1KWkLRo6Hy9wLzzE4jAr+Fkt8Bi8a1YnX9aWIXPl/R8PxMb4fL928UAEm9fuyFZ1Z1F+BTTK2RM6NLReUQ==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.0.6" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.2.tgz", + "integrity": "sha512-3Dgx5k3RvtKqc8DvR2BEyh2fVyjZe5P4e0zD1r8dyuVmpaYDaASZ2YeNVgyWXMCWH7xzrj4vepTYlKwfj78QLg==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.0.6" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.1.tgz", + "integrity": "sha512-ovp9UXzi3ibA/AOyL4CXW7hjbrR+ZQoxbJZ8rfZTSMpqYhT8Jl8/sLUozMobIzSV6gsZYuHR3QnzJmemzvBQhg==", + "dev": true, + "dependencies": { + "@types/phoenix": "^1.5.4", + "websocket": "^1.0.34" + } + }, + "node_modules/@supabase/storage-js": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.0.tgz", + "integrity": "sha512-f5EBw0wM96hKmnrXhgiqq2Reh9O0NgjKE+jkaKY4jQmfutefqaCAWn+cBzlmHs9h135H2ldaGmhWRFHUSkLt2g==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.1.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.0.tgz", + "integrity": "sha512-IXdSE/z+GQOaQWgwX7Gq48WSwRUhRczBKuHJHJxoKPGeY3S8NuJtZbOG62eTjDXq5YZBw+0c4pbRDb6OZQzWCw==", + "dev": true, + "dependencies": { + "@supabase/functions-js": "^1.3.3", + "@supabase/gotrue-js": "^1.22.12", + "@supabase/postgrest-js": "^0.37.2", + "@supabase/realtime-js": "^1.7.1", + "@supabase/storage-js": "^1.7.0" + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "1.0.0-next.34", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.34.tgz", + "integrity": "sha512-BzZVfy39idFojauroLrE/v9paJ1/HOlS2R857ooCwaLg+RrRy6zJHWwYxNSv5e8AaZiVg7ioZZpU/2g6ZgUpaQ==", + "dev": true, + "dependencies": { + "@sveltejs/adapter-cloudflare": "1.0.0-next.17", + "@sveltejs/adapter-netlify": "1.0.0-next.51", + "@sveltejs/adapter-vercel": "1.0.0-next.47" + } + }, + "node_modules/@sveltejs/adapter-cloudflare": { + "version": "1.0.0-next.17", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.17.tgz", + "integrity": "sha512-B2ze5L0LsHFsZctVNy4sw0XxgV2YiVEHyMrWRo3pmpTwpu6GT5V3U2fsEoCMg/RKMazlWkyKTCuUqmcpYjjf2g==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.21", + "worktop": "0.8.0-next.12" + } + }, + "node_modules/@sveltejs/adapter-netlify": { + "version": "1.0.0-next.51", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.51.tgz", + "integrity": "sha512-P7/cW/0z8zd8J6DOI2yxKZG0+HRMMuzfOf0yzFXX0vRwBePhKlZ/H4qhTOo2NrCmj3Len545o+ugj5gyMXl1+g==", + "dev": true, + "dependencies": { + "@iarna/toml": "^2.2.5", + "esbuild": "^0.14.21", + "tiny-glob": "^0.2.9" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", + "dev": true, + "dependencies": { + "tiny-glob": "^0.2.9" + } + }, + "node_modules/@sveltejs/adapter-vercel": { + "version": "1.0.0-next.47", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.47.tgz", + "integrity": "sha512-VV3vP8KqL9XOc7xfQLVhXTM5jrTme+r1qJy98u5/dhAhkdjqrGDwAKo/s7MoB3rTYxLb2b8I4QxAaoz2Y2aIBg==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.21" + } + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.9.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=14.13" + }, + "peerDependencies": { + "svelte": "^3.44.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.41", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.41.tgz", + "integrity": "sha512-2kZ49mpi/YW1PIPvKaJNSSwIFgmw9QUf1+yaNa4U8yJD6AsfSHXAU3goscWbi1jfWnSg2PhvwAf+bvLCdp2F9g==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.0", + "debug": "^4.3.4", + "kleur": "^4.1.4", + "magic-string": "^0.26.1", + "svelte-hmr": "^0.14.11" + }, + "engines": { + "node": "^14.13.1 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^2.9.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", + "dev": true + }, + "node_modules/@types/phoenix": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", + "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.20.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.20.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.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, + "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-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "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 + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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 + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "dev": true + }, + "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 + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es5-ext": { + "version": "0.10.60", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", + "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": ">=6.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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, + "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/eslint/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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 + }, + "node_modules/eslint/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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, + "engines": { + "node": ">=4.0" + } + }, + "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, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", + "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.5", + "jest-message-util": "^27.2.5", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "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 + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "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-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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "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, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "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, + "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "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 + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "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, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/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, + "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/jest-diff/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/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 + }, + "node_modules/jest-diff/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/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, + "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/jest-matcher-utils/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/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 + }, + "node_modules/jest-matcher-utils/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/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, + "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/jest-message-util/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/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 + }, + "node_modules/jest-message-util/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", + "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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 + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "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, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "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": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "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, + "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 + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "dependencies": { + "pngjs": "^4.0.1" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/playwright-core": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.21.1.tgz", + "integrity": "sha512-SbK5dEsai9ZUKlxcinqegorBq4GnftXd4/GfW+pLsdQIQWrLCM/JNh6YQ2Rf2enVykXCejtoXW8L5vJXBBVSJQ==", + "dev": true, + "dependencies": { + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "jpeg-js": "0.4.3", + "mime": "3.0.0", + "pixelmatch": "5.2.1", + "pngjs": "6.0.0", + "progress": "2.0.3", + "proper-lockfile": "4.1.2", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "socks-proxy-agent": "6.1.1", + "stack-utils": "2.0.5", + "ws": "8.4.2", + "yauzl": "2.10.0", + "yazl": "2.5.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", + "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", + "dev": true, + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "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" + } + ] + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexparam": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz", + "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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, + "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==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/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 + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.47.0.tgz", + "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", + "dev": true, + "dependencies": { + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-check/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-hmr": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "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, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/vite": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.12", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dev": true, + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/worktop": { + "version": "0.8.0-next.12", + "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.12.tgz", + "integrity": "sha512-ZXdgI9XOf0uB4IegFoViLdQ0Bf7hish0XMHwuV3nopOXygfLJkwAC5+HyA+sihBMSM2sLLQ5uGnD5aknL8+NQg==", + "dev": true, + "dependencies": { + "mrmime": "^1.0.0", + "regexparam": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "dev": true, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@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, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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 + }, + "@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, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@playwright/test": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.21.1.tgz", + "integrity": "sha512-XkkTXl5gvEm4fciqeHvY5IuSS/OfQef0MO6RpBNmtm6EuYSdtUvP/sDVuWRKsDqyVdB3WSA0az7iSw79f2//JQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.16.7", + "@babel/core": "7.16.12", + "@babel/helper-plugin-utils": "7.16.7", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-dynamic-import": "7.16.7", + "@babel/plugin-proposal-export-namespace-from": "7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.16.7", + "@babel/plugin-proposal-numeric-separator": "7.16.7", + "@babel/plugin-proposal-optional-chaining": "7.16.7", + "@babel/plugin-proposal-private-methods": "7.16.11", + "@babel/plugin-proposal-private-property-in-object": "7.16.7", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.16.8", + "@babel/preset-typescript": "7.16.7", + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "expect": "27.2.5", + "jest-matcher-utils": "27.2.5", + "json5": "2.2.1", + "mime": "3.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "open": "8.4.0", + "pirates": "4.0.4", + "playwright-core": "1.21.1", + "rimraf": "3.0.2", + "source-map-support": "0.4.18", + "stack-utils": "2.0.5", + "yazl": "2.5.1" + } + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@supabase/functions-js": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.3.tgz", + "integrity": "sha512-35vO9niHRtzGe1QSvXKdOfvGPiX2KC44dGpWU6y0/gZCfTIgog/soU9HqABzQC/maVowO3hGLWfez5aN0MKfow==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.5" + } + }, + "@supabase/gotrue-js": { + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.13.tgz", + "integrity": "sha512-Ylus1KWkLRo6Hy9wLzzE4jAr+Fkt8Bi8a1YnX9aWIXPl/R8PxMb4fL928UAEm9fuyFZ1Z1F+BTTK2RM6NLReUQ==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.6" + } + }, + "@supabase/postgrest-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.2.tgz", + "integrity": "sha512-3Dgx5k3RvtKqc8DvR2BEyh2fVyjZe5P4e0zD1r8dyuVmpaYDaASZ2YeNVgyWXMCWH7xzrj4vepTYlKwfj78QLg==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.6" + } + }, + "@supabase/realtime-js": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.1.tgz", + "integrity": "sha512-ovp9UXzi3ibA/AOyL4CXW7hjbrR+ZQoxbJZ8rfZTSMpqYhT8Jl8/sLUozMobIzSV6gsZYuHR3QnzJmemzvBQhg==", + "dev": true, + "requires": { + "@types/phoenix": "^1.5.4", + "websocket": "^1.0.34" + } + }, + "@supabase/storage-js": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.0.tgz", + "integrity": "sha512-f5EBw0wM96hKmnrXhgiqq2Reh9O0NgjKE+jkaKY4jQmfutefqaCAWn+cBzlmHs9h135H2ldaGmhWRFHUSkLt2g==", + "dev": true, + "requires": { + "cross-fetch": "^3.1.0" + } + }, + "@supabase/supabase-js": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.0.tgz", + "integrity": "sha512-IXdSE/z+GQOaQWgwX7Gq48WSwRUhRczBKuHJHJxoKPGeY3S8NuJtZbOG62eTjDXq5YZBw+0c4pbRDb6OZQzWCw==", + "dev": true, + "requires": { + "@supabase/functions-js": "^1.3.3", + "@supabase/gotrue-js": "^1.22.12", + "@supabase/postgrest-js": "^0.37.2", + "@supabase/realtime-js": "^1.7.1", + "@supabase/storage-js": "^1.7.0" + } + }, + "@sveltejs/adapter-auto": { + "version": "1.0.0-next.34", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.34.tgz", + "integrity": "sha512-BzZVfy39idFojauroLrE/v9paJ1/HOlS2R857ooCwaLg+RrRy6zJHWwYxNSv5e8AaZiVg7ioZZpU/2g6ZgUpaQ==", + "dev": true, + "requires": { + "@sveltejs/adapter-cloudflare": "1.0.0-next.17", + "@sveltejs/adapter-netlify": "1.0.0-next.51", + "@sveltejs/adapter-vercel": "1.0.0-next.47" + } + }, + "@sveltejs/adapter-cloudflare": { + "version": "1.0.0-next.17", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.17.tgz", + "integrity": "sha512-B2ze5L0LsHFsZctVNy4sw0XxgV2YiVEHyMrWRo3pmpTwpu6GT5V3U2fsEoCMg/RKMazlWkyKTCuUqmcpYjjf2g==", + "dev": true, + "requires": { + "esbuild": "^0.14.21", + "worktop": "0.8.0-next.12" + } + }, + "@sveltejs/adapter-netlify": { + "version": "1.0.0-next.51", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.51.tgz", + "integrity": "sha512-P7/cW/0z8zd8J6DOI2yxKZG0+HRMMuzfOf0yzFXX0vRwBePhKlZ/H4qhTOo2NrCmj3Len545o+ugj5gyMXl1+g==", + "dev": true, + "requires": { + "@iarna/toml": "^2.2.5", + "esbuild": "^0.14.21", + "tiny-glob": "^0.2.9" + } + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz", + "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==", + "dev": true, + "requires": { + "tiny-glob": "^0.2.9" + } + }, + "@sveltejs/adapter-vercel": { + "version": "1.0.0-next.47", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.47.tgz", + "integrity": "sha512-VV3vP8KqL9XOc7xfQLVhXTM5jrTme+r1qJy98u5/dhAhkdjqrGDwAKo/s7MoB3rTYxLb2b8I4QxAaoz2Y2aIBg==", + "dev": true, + "requires": { + "esbuild": "^0.14.21" + } + }, + "@sveltejs/kit": { + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "sade": "^1.7.4", + "vite": "^2.9.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.41", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.41.tgz", + "integrity": "sha512-2kZ49mpi/YW1PIPvKaJNSSwIFgmw9QUf1+yaNa4U8yJD6AsfSHXAU3goscWbi1jfWnSg2PhvwAf+bvLCdp2F9g==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.0", + "debug": "^4.3.4", + "kleur": "^4.1.4", + "magic-string": "^0.26.1", + "svelte-hmr": "^0.14.11" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", + "dev": true + }, + "@types/phoenix": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", + "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==", + "dev": true + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.20.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.20.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "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, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "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 + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "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, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, + "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, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "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 + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "dev": true + }, + "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 + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "es5-ext": { + "version": "0.10.60", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", + "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" + } + }, + "esbuild-android-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-svelte3": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "expect": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", + "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.5", + "jest-message-util": "^27.2.5", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "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 + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@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" + } + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "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 + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "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, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "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 + }, + "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, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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 + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jpeg-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", + "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "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 + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true + }, + "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 + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "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 + }, + "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 + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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.3" + } + }, + "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, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "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 + }, + "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 + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true + }, + "pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "requires": { + "pngjs": "^4.0.1" + }, + "dependencies": { + "pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true + } + } + }, + "playwright-core": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.21.1.tgz", + "integrity": "sha512-SbK5dEsai9ZUKlxcinqegorBq4GnftXd4/GfW+pLsdQIQWrLCM/JNh6YQ2Rf2enVykXCejtoXW8L5vJXBBVSJQ==", + "dev": true, + "requires": { + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "jpeg-js": "0.4.3", + "mime": "3.0.0", + "pixelmatch": "5.2.1", + "pngjs": "6.0.0", + "progress": "2.0.3", + "proper-lockfile": "4.1.2", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "socks-proxy-agent": "6.1.1", + "stack-utils": "2.0.5", + "ws": "8.4.2", + "yauzl": "2.10.0", + "yazl": "2.5.1" + } + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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 + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "prettier-plugin-svelte": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", + "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", + "dev": true, + "requires": {} + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "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 + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexparam": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz", + "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==", + "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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 + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dev": true, + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + } + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "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 + }, + "svelte": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.47.0.tgz", + "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==", + "dev": true + }, + "svelte-check": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "svelte-hmr": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", + "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "dev": true, + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vite": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", + "dev": true, + "requires": { + "esbuild": "^0.14.27", + "fsevents": "~2.3.2", + "postcss": "^8.4.12", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dev": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worktop": { + "version": "0.8.0-next.12", + "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.12.tgz", + "integrity": "sha512-ZXdgI9XOf0uB4IegFoViLdQ0Bf7hish0XMHwuV3nopOXygfLJkwAC5+HyA+sihBMSM2sLLQ5uGnD5aknL8+NQg==", + "dev": true, + "requires": { + "mrmime": "^1.0.0", + "regexparam": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "requires": {} + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/bored_games/package.json b/bored_games/package.json new file mode 100644 index 00000000..f21f4f33 --- /dev/null +++ b/bored_games/package.json @@ -0,0 +1,39 @@ +{ + "name": "my-app", + "version": "0.0.1", + "scripts": { + "dev": "cross-env DEV=true svelte-kit dev", + "build": "svelte-kit build", + "package": "svelte-kit package", + "preview": "svelte-kit preview", + "prepare": "svelte-kit sync", + "test": "playwright test", + "check": "svelte-check --tsconfig tsconfig.json", + "check:watch": "svelte-check --tsconfig tsconfig.json --watch", + "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore . --max-warnings 0", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", + "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", + "update": "npx npm-check-updates -u && npm run prune" + }, + "devDependencies": { + "@playwright/test": "^1.21.0", + "@supabase/supabase-js": "^1.35.0", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.29", + "@sveltejs/kit": "next", + "@typescript-eslint/eslint-plugin": "^5.10.1", + "@typescript-eslint/parser": "^5.10.1", + "cross-env": "^7.0.3", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^3.2.1", + "prettier": "^2.5.1", + "prettier-plugin-svelte": "^2.5.0", + "svelte": "^3.44.0", + "svelte-check": "^2.2.6", + "svelte-preprocess": "^4.10.1", + "tslib": "^2.3.1", + "typescript": "~4.6.2" + }, + "type": "module" +} diff --git a/bored_games/playwright.config.ts b/bored_games/playwright.config.ts new file mode 100644 index 00000000..fc9d8a61 --- /dev/null +++ b/bored_games/playwright.config.ts @@ -0,0 +1,10 @@ +import type { PlaywrightTestConfig } from "@playwright/test" + +const config: PlaywrightTestConfig = { + webServer: { + command: "npm run build && npm run preview", + port: 3000, + }, +} + +export default config diff --git a/bored_games/src/app.d.ts b/bored_games/src/app.d.ts new file mode 100644 index 00000000..f750be3d --- /dev/null +++ b/bored_games/src/app.d.ts @@ -0,0 +1,10 @@ +/// + +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare namespace App { + // interface Locals {} + // interface Platform {} + // interface Session {} + // interface Stuff {} +} diff --git a/bored_games/src/app.html b/bored_games/src/app.html new file mode 100644 index 00000000..4a7429b5 --- /dev/null +++ b/bored_games/src/app.html @@ -0,0 +1,14 @@ + + + + + + + + + %svelte.head% + + +
%svelte.body%
+ + diff --git a/bored_games/src/routes/index.svelte b/bored_games/src/routes/index.svelte new file mode 100644 index 00000000..5982b0ae --- /dev/null +++ b/bored_games/src/routes/index.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/bored_games/static/favicon.png b/bored_games/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH { + await page.goto("/") + expect(await page.textContent("h1")).toBe("Welcome to SvelteKit") +}) diff --git a/bored_games/tsconfig.json b/bored_games/tsconfig.json new file mode 100644 index 00000000..fbfa628c --- /dev/null +++ b/bored_games/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "lib": ["es2020", "DOM"], + "moduleResolution": "node", + "module": "es2020", + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "es2020" + } +} From ede594077716072647e3b1aac2ef3e3f4bd7f0e1 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 19 Apr 2022 21:05:10 +0200 Subject: [PATCH 040/391] Rename bored games to bored gems --- ...st_bored_games.yml => test_bored_gems.yml} | 8 +- .pre-commit-config.yaml | 18 +- {bored_games => bored_gems}/.eslintrc.cjs | 0 {bored_games => bored_gems}/.gitignore | 0 {bored_games => bored_gems}/.npmrc | 0 {bored_games => bored_gems}/.prettierrc | 0 {bored_games => bored_gems}/README.md | 0 {bored_games => bored_gems}/package-lock.json | 0 {bored_games => bored_gems}/package.json | 0 .../playwright.config.ts | 0 {bored_games => bored_gems}/src/app.d.ts | 0 {bored_games => bored_gems}/src/app.html | 0 .../src/routes/index.svelte | 0 .../static/favicon.png | Bin {bored_games => bored_gems}/svelte.config.js | 0 {bored_games => bored_gems}/tests/test.ts | 0 {bored_games => bored_gems}/tsconfig.json | 0 replay_comparer/package-lock.json | 1116 +++++++++------ supabase_stream_scripts/package-lock.json | 1218 ++++++++++------- svelte_frontend/package-lock.json | 6 +- svelte_frontend/package.json | 6 +- 21 files changed, 1461 insertions(+), 911 deletions(-) rename .github/workflows/{test_bored_games.yml => test_bored_gems.yml} (89%) rename {bored_games => bored_gems}/.eslintrc.cjs (100%) rename {bored_games => bored_gems}/.gitignore (100%) rename {bored_games => bored_gems}/.npmrc (100%) rename {bored_games => bored_gems}/.prettierrc (100%) rename {bored_games => bored_gems}/README.md (100%) rename {bored_games => bored_gems}/package-lock.json (100%) rename {bored_games => bored_gems}/package.json (100%) rename {bored_games => bored_gems}/playwright.config.ts (100%) rename {bored_games => bored_gems}/src/app.d.ts (100%) rename {bored_games => bored_gems}/src/app.html (100%) rename {bored_games => bored_gems}/src/routes/index.svelte (100%) rename {bored_games => bored_gems}/static/favicon.png (100%) rename {bored_games => bored_gems}/svelte.config.js (100%) rename {bored_games => bored_gems}/tests/test.ts (100%) rename {bored_games => bored_gems}/tsconfig.json (100%) diff --git a/.github/workflows/test_bored_games.yml b/.github/workflows/test_bored_gems.yml similarity index 89% rename from .github/workflows/test_bored_games.yml rename to .github/workflows/test_bored_gems.yml index d9ac9349..9e368d3d 100644 --- a/.github/workflows/test_bored_games.yml +++ b/.github/workflows/test_bored_gems.yml @@ -1,11 +1,11 @@ -name: test_bored_games +name: test_bored_gems on: push: paths: - - bored_games/** - - .github/workflows/test_bored_games.yml + - bored_gems/** + - .github/workflows/test_bored_gems.yml pull_request: branches: - master @@ -14,7 +14,7 @@ on: jobs: test_supabase_stream_scripts: env: - SUBDIRECTORY: bored_games + SUBDIRECTORY: bored_gems strategy: fail-fast: false matrix: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e0015322..c8fe517b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -128,11 +128,11 @@ repos: entry: bash -c "cd replay_comparer && npm run format" pass_filenames: false - - id: format_bored_games - name: format_bored_games + - id: format_bored_gems + name: format_bored_gems stages: [commit] language: system - entry: bash -c "cd bored_games && npm run format" + entry: bash -c "cd bored_gems && npm run format" pass_filenames: false - id: lint_svelte_frontend @@ -156,11 +156,11 @@ repos: entry: bash -c "cd replay_comparer && npm run lint" pass_filenames: false - - id: lint_bored_games - name: lint_bored_games + - id: lint_bored_gems + name: lint_bored_gems stages: [commit] language: system - entry: bash -c "cd bored_games && npm run lint" + entry: bash -c "cd bored_gems && npm run lint" pass_filenames: false - id: pylint @@ -203,11 +203,11 @@ repos: entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" pass_filenames: false - - id: test_bored_games - name: test_bored_games + - id: test_bored_gems + name: test_bored_gems stages: [commit] language: system - entry: bash -c "cd bored_games && npm run test" + entry: bash -c "cd bored_gems && npm run test" pass_filenames: false # Run svelte e2e tests diff --git a/bored_games/.eslintrc.cjs b/bored_gems/.eslintrc.cjs similarity index 100% rename from bored_games/.eslintrc.cjs rename to bored_gems/.eslintrc.cjs diff --git a/bored_games/.gitignore b/bored_gems/.gitignore similarity index 100% rename from bored_games/.gitignore rename to bored_gems/.gitignore diff --git a/bored_games/.npmrc b/bored_gems/.npmrc similarity index 100% rename from bored_games/.npmrc rename to bored_gems/.npmrc diff --git a/bored_games/.prettierrc b/bored_gems/.prettierrc similarity index 100% rename from bored_games/.prettierrc rename to bored_gems/.prettierrc diff --git a/bored_games/README.md b/bored_gems/README.md similarity index 100% rename from bored_games/README.md rename to bored_gems/README.md diff --git a/bored_games/package-lock.json b/bored_gems/package-lock.json similarity index 100% rename from bored_games/package-lock.json rename to bored_gems/package-lock.json diff --git a/bored_games/package.json b/bored_gems/package.json similarity index 100% rename from bored_games/package.json rename to bored_gems/package.json diff --git a/bored_games/playwright.config.ts b/bored_gems/playwright.config.ts similarity index 100% rename from bored_games/playwright.config.ts rename to bored_gems/playwright.config.ts diff --git a/bored_games/src/app.d.ts b/bored_gems/src/app.d.ts similarity index 100% rename from bored_games/src/app.d.ts rename to bored_gems/src/app.d.ts diff --git a/bored_games/src/app.html b/bored_gems/src/app.html similarity index 100% rename from bored_games/src/app.html rename to bored_gems/src/app.html diff --git a/bored_games/src/routes/index.svelte b/bored_gems/src/routes/index.svelte similarity index 100% rename from bored_games/src/routes/index.svelte rename to bored_gems/src/routes/index.svelte diff --git a/bored_games/static/favicon.png b/bored_gems/static/favicon.png similarity index 100% rename from bored_games/static/favicon.png rename to bored_gems/static/favicon.png diff --git a/bored_games/svelte.config.js b/bored_gems/svelte.config.js similarity index 100% rename from bored_games/svelte.config.js rename to bored_gems/svelte.config.js diff --git a/bored_games/tests/test.ts b/bored_gems/tests/test.ts similarity index 100% rename from bored_games/tests/test.ts rename to bored_gems/tests/test.ts diff --git a/bored_games/tsconfig.json b/bored_gems/tsconfig.json similarity index 100% rename from bored_games/tsconfig.json rename to bored_gems/tsconfig.json diff --git a/replay_comparer/package-lock.json b/replay_comparer/package-lock.json index d8ba4815..8452dbb1 100644 --- a/replay_comparer/package-lock.json +++ b/replay_comparer/package-lock.json @@ -632,19 +632,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@npmcli/git": { @@ -668,18 +680,30 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@npmcli/installed-package-contents": { @@ -748,9 +772,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -777,9 +801,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -866,9 +890,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "node_modules/@types/pug": { "version": "2.0.6", @@ -884,14 +908,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -916,30 +940,42 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" }, "engines": { @@ -959,13 +995,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -976,12 +1012,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1002,9 +1038,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1015,13 +1051,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1041,31 +1077,43 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1081,12 +1129,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1432,19 +1480,31 @@ "semver": "^7.0.0" } }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/builtins/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/cacache": { @@ -1539,9 +1599,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true, "funding": [ { @@ -1903,9 +1963,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "node_modules/emoji-regex": { @@ -1954,9 +2014,9 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "node_modules/esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -1965,32 +2025,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "node_modules/esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "cpu": [ "x64" ], @@ -2003,9 +2063,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "cpu": [ "arm64" ], @@ -2018,9 +2078,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "cpu": [ "x64" ], @@ -2033,9 +2093,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "cpu": [ "arm64" ], @@ -2048,9 +2108,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "cpu": [ "x64" ], @@ -2063,9 +2123,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "cpu": [ "arm64" ], @@ -2078,9 +2138,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "cpu": [ "ia32" ], @@ -2093,9 +2153,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "cpu": [ "x64" ], @@ -2108,9 +2168,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "cpu": [ "arm" ], @@ -2123,9 +2183,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "cpu": [ "arm64" ], @@ -2138,9 +2198,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "cpu": [ "mips64el" ], @@ -2153,9 +2213,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "cpu": [ "ppc64" ], @@ -2168,9 +2228,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "cpu": [ "riscv64" ], @@ -2183,9 +2243,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "cpu": [ "s390x" ], @@ -2198,9 +2258,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "cpu": [ "x64" ], @@ -2213,9 +2273,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "cpu": [ "x64" ], @@ -2228,9 +2288,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "cpu": [ "x64" ], @@ -2243,9 +2303,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "cpu": [ "ia32" ], @@ -2258,9 +2318,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "cpu": [ "x64" ], @@ -2273,9 +2333,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "cpu": [ "arm64" ], @@ -3067,9 +3127,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -3610,9 +3670,9 @@ } }, "node_modules/lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true, "engines": { "node": ">=12" @@ -3899,25 +3959,37 @@ "node": "^12.22 || ^14.13 || >=16" } }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "node_modules/nopt": { @@ -3950,19 +4022,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/normalize-path": { @@ -3992,9 +4076,9 @@ } }, "node_modules/npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -4102,6 +4186,18 @@ "node": ">=8" } }, + "node_modules/npm-check-updates/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -4115,18 +4211,18 @@ } }, "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-check-updates/node_modules/supports-color": { @@ -4153,19 +4249,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-install-checks/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-normalize-package-bin": { @@ -4188,19 +4296,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-packlist": { @@ -4236,25 +4356,37 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "dependencies": { "make-fetch-happen": "^10.0.6", @@ -5309,9 +5441,9 @@ } }, "node_modules/svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "dependencies": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -5357,9 +5489,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "hasInstallScript": true, "dependencies": { "@types/pug": "^2.0.4", @@ -5677,19 +5809,31 @@ "node": ">=8" } }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/update-notifier/node_modules/supports-color": { @@ -5760,9 +5904,9 @@ } }, "node_modules/vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "dependencies": { "esbuild": "^0.14.27", "postcss": "^8.4.12", @@ -6425,13 +6569,22 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -6454,12 +6607,23 @@ }, "dependencies": { "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -6512,9 +6676,9 @@ } }, "@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "requires": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -6535,9 +6699,9 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -6593,9 +6757,9 @@ "dev": true }, "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "@types/pug": { "version": "2.0.6", @@ -6611,14 +6775,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -6627,64 +6791,73 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" } }, "@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -6692,38 +6865,47 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -6976,13 +7158,22 @@ "semver": "^7.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -7057,9 +7248,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true }, "chalk": { @@ -7325,9 +7516,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "emoji-regex": { @@ -7373,150 +7564,150 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", - "requires": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "requires": { + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "optional": true }, "escalade": { @@ -8107,9 +8298,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -8531,9 +8722,9 @@ "dev": true }, "lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true }, "magic-string": { @@ -8743,21 +8934,30 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "nopt": { @@ -8781,13 +8981,22 @@ "validate-npm-package-license": "^3.0.4" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8813,9 +9022,9 @@ } }, "npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -8898,6 +9107,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -8908,12 +9126,12 @@ } }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } }, "supports-color": { @@ -8936,13 +9154,22 @@ "semver": "^7.1.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8964,13 +9191,22 @@ "validate-npm-package-name": "^4.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -8999,21 +9235,30 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -9771,9 +10016,9 @@ "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==" }, "svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "requires": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -9807,9 +10052,9 @@ "requires": {} }, "svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "requires": { "@types/pug": "^2.0.4", "@types/sass": "^1.16.0", @@ -10018,13 +10263,22 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } }, "supports-color": { @@ -10088,9 +10342,9 @@ } }, "vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "requires": { "esbuild": "^0.14.27", "fsevents": "~2.3.2", diff --git a/supabase_stream_scripts/package-lock.json b/supabase_stream_scripts/package-lock.json index 69785b0d..3da21eba 100644 --- a/supabase_stream_scripts/package-lock.json +++ b/supabase_stream_scripts/package-lock.json @@ -1232,19 +1232,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@npmcli/git": { @@ -1268,18 +1280,30 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@npmcli/installed-package-contents": { @@ -1348,9 +1372,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -1454,9 +1478,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -1609,9 +1633,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", + "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -1657,9 +1681,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "node_modules/@types/phoenix": { "version": "1.5.4", @@ -1668,9 +1692,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", "dev": true }, "node_modules/@types/pug": { @@ -1708,14 +1732,14 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1740,30 +1764,42 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" }, "engines": { @@ -1783,13 +1819,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1800,12 +1836,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1826,9 +1862,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1839,13 +1875,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1865,31 +1901,43 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1905,12 +1953,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -2417,19 +2465,31 @@ "semver": "^7.0.0" } }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/builtins/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/cacache": { @@ -2521,9 +2581,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true, "funding": [ { @@ -3076,9 +3136,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "node_modules/emittery": { @@ -3184,9 +3244,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -3195,32 +3255,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "node_modules/esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "cpu": [ "x64" ], @@ -3233,9 +3293,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "cpu": [ "arm64" ], @@ -3248,9 +3308,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "cpu": [ "x64" ], @@ -3263,9 +3323,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "cpu": [ "arm64" ], @@ -3278,9 +3338,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "cpu": [ "x64" ], @@ -3293,9 +3353,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "cpu": [ "arm64" ], @@ -3308,9 +3368,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "cpu": [ "ia32" ], @@ -3323,9 +3383,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "cpu": [ "x64" ], @@ -3338,9 +3398,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "cpu": [ "arm" ], @@ -3353,9 +3413,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "cpu": [ "arm64" ], @@ -3368,9 +3428,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "cpu": [ "mips64el" ], @@ -3383,9 +3443,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "cpu": [ "ppc64" ], @@ -3398,9 +3458,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "cpu": [ "riscv64" ], @@ -3413,9 +3473,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "cpu": [ "s390x" ], @@ -3428,9 +3488,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "cpu": [ "x64" ], @@ -3443,9 +3503,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "cpu": [ "x64" ], @@ -3458,9 +3518,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "cpu": [ "x64" ], @@ -3473,9 +3533,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "cpu": [ "ia32" ], @@ -3488,9 +3548,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "cpu": [ "x64" ], @@ -3503,9 +3563,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "cpu": [ "arm64" ], @@ -4465,9 +4525,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -5435,19 +5495,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/jest-util": { @@ -5839,9 +5911,9 @@ } }, "node_modules/lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true, "engines": { "node": ">=12" @@ -6270,19 +6342,31 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/node-int64": { @@ -6292,9 +6376,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "node_modules/nopt": { @@ -6327,19 +6411,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/normalize-path": { @@ -6369,9 +6465,9 @@ } }, "node_modules/npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -6452,6 +6548,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-check-updates/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -6495,18 +6603,18 @@ } }, "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-install-checks": { @@ -6521,19 +6629,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-install-checks/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-normalize-package-bin": { @@ -6556,19 +6676,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-packlist": { @@ -6604,25 +6736,37 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "dependencies": { "make-fetch-happen": "^10.0.6", @@ -7927,9 +8071,9 @@ } }, "node_modules/svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "dependencies": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -7980,9 +8124,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "hasInstallScript": true, "dependencies": { "@types/pug": "^2.0.4", @@ -8230,19 +8374,31 @@ } } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/tslib": { @@ -8393,19 +8549,31 @@ "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=10" } }, "node_modules/uri-js": { @@ -8500,9 +8668,9 @@ } }, "node_modules/vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "dependencies": { "esbuild": "^0.14.27", "postcss": "^8.4.12", @@ -9785,13 +9953,22 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -9814,12 +9991,23 @@ }, "dependencies": { "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -9872,9 +10060,9 @@ } }, "@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "requires": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -9972,9 +10160,9 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.310", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.310.tgz", - "integrity": "sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ==", + "version": "1.0.0-next.312", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", + "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -10087,9 +10275,9 @@ } }, "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", + "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -10135,9 +10323,9 @@ "dev": true }, "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "@types/phoenix": { "version": "1.5.4", @@ -10146,9 +10334,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", "dev": true }, "@types/pug": { @@ -10186,14 +10374,14 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", + "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/type-utils": "5.19.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -10202,64 +10390,73 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", + "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", + "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0" } }, "@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", + "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.18.0", + "@typescript-eslint/utils": "5.19.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", + "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", + "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/visitor-keys": "5.19.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -10267,38 +10464,47 @@ "tsutils": "^3.21.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", + "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@typescript-eslint/scope-manager": "5.19.0", + "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/typescript-estree": "5.19.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", + "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/types": "5.19.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -10674,13 +10880,22 @@ "semver": "^7.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -10755,9 +10970,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001327", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", - "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "devOptional": true }, "chalk": { @@ -11178,9 +11393,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", "devOptional": true }, "emittery": { @@ -11273,150 +11488,150 @@ } }, "esbuild": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz", - "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==", - "requires": { - "esbuild-android-64": "0.14.34", - "esbuild-android-arm64": "0.14.34", - "esbuild-darwin-64": "0.14.34", - "esbuild-darwin-arm64": "0.14.34", - "esbuild-freebsd-64": "0.14.34", - "esbuild-freebsd-arm64": "0.14.34", - "esbuild-linux-32": "0.14.34", - "esbuild-linux-64": "0.14.34", - "esbuild-linux-arm": "0.14.34", - "esbuild-linux-arm64": "0.14.34", - "esbuild-linux-mips64le": "0.14.34", - "esbuild-linux-ppc64le": "0.14.34", - "esbuild-linux-riscv64": "0.14.34", - "esbuild-linux-s390x": "0.14.34", - "esbuild-netbsd-64": "0.14.34", - "esbuild-openbsd-64": "0.14.34", - "esbuild-sunos-64": "0.14.34", - "esbuild-windows-32": "0.14.34", - "esbuild-windows-64": "0.14.34", - "esbuild-windows-arm64": "0.14.34" + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", + "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "requires": { + "esbuild-android-64": "0.14.36", + "esbuild-android-arm64": "0.14.36", + "esbuild-darwin-64": "0.14.36", + "esbuild-darwin-arm64": "0.14.36", + "esbuild-freebsd-64": "0.14.36", + "esbuild-freebsd-arm64": "0.14.36", + "esbuild-linux-32": "0.14.36", + "esbuild-linux-64": "0.14.36", + "esbuild-linux-arm": "0.14.36", + "esbuild-linux-arm64": "0.14.36", + "esbuild-linux-mips64le": "0.14.36", + "esbuild-linux-ppc64le": "0.14.36", + "esbuild-linux-riscv64": "0.14.36", + "esbuild-linux-s390x": "0.14.36", + "esbuild-netbsd-64": "0.14.36", + "esbuild-openbsd-64": "0.14.36", + "esbuild-sunos-64": "0.14.36", + "esbuild-windows-32": "0.14.36", + "esbuild-windows-64": "0.14.36", + "esbuild-windows-arm64": "0.14.36" } }, "esbuild-android-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz", - "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", + "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz", - "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", + "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz", - "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", + "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz", - "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", + "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz", - "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", + "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz", - "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", + "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz", - "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", + "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz", - "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", + "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz", - "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", + "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz", - "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", + "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz", - "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", + "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz", - "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", + "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz", - "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", + "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz", - "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", + "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz", - "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", + "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz", - "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", + "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz", - "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", + "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz", - "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", + "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz", - "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", + "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.34", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz", - "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==", + "version": "0.14.36", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", + "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", "optional": true }, "escalade": { @@ -12134,9 +12349,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -12884,13 +13099,22 @@ "semver": "^7.3.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13207,9 +13431,9 @@ "dev": true }, "lru-cache": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", - "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==", "dev": true }, "lz-string": { @@ -13525,13 +13749,22 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13549,9 +13782,9 @@ "dev": true }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "devOptional": true }, "nopt": { @@ -13575,13 +13808,22 @@ "validate-npm-package-license": "^3.0.4" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13607,9 +13849,9 @@ } }, "npm-check-updates": { - "version": "12.5.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.8.tgz", - "integrity": "sha512-8SDZ6qYXI0aKf63zSbByqB9QmK8ygrZ+UVcXg9kGQyvH7dGIcFauFF0ksC0NdThHkU/5QhowJVSHXva9zujkJg==", + "version": "12.5.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.9.tgz", + "integrity": "sha512-l9iOvD7EsQb96gFJL45V01YG6bP8+dmobYnSguvehPuNwgdWNMrE8RC8bSfURX5iUmX4bkobN4T8XMHXN9GMHA==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -13671,6 +13913,15 @@ "p-locate": "^5.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -13699,12 +13950,12 @@ } }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13718,13 +13969,22 @@ "semver": "^7.1.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13746,13 +14006,22 @@ "validate-npm-package-name": "^4.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -13781,21 +14050,30 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } }, "npm-registry-fetch": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz", - "integrity": "sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -14745,9 +15023,9 @@ "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==" }, "svelte-check": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.6.0.tgz", - "integrity": "sha512-POL3IqLUuGqb9DdvuXQaSTNXYnw/odK4hqW86+2LwGcZTdbUPKBBln7pq74wXmcnRE+12bXMY1CvbcUNa2d5nw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.7.0.tgz", + "integrity": "sha512-GrvG24j0+i8AOm0k0KyJ6Dqc+TAR2yzB7rtS4nljHStunVxCTr/1KYlv4EsOeoqtHLzeWMOd5D2O6nDdP/yw4A==", "requires": { "chokidar": "^3.4.1", "fast-glob": "^3.2.7", @@ -14780,9 +15058,9 @@ "requires": {} }, "svelte-preprocess": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.5.tgz", - "integrity": "sha512-VKXPRScCzAZqeBZOGq4LLwtNrAu++mVn7XvQox3eFDV7Ciq0Lg70Q8QWjH9iXF7J+pMlXhPsSFwpCb2E+hoeyA==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "requires": { "@types/pug": "^2.0.4", "@types/sass": "^1.16.0", @@ -14926,13 +15204,22 @@ "yargs-parser": "20.x" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -15048,13 +15335,22 @@ "xdg-basedir": "^4.0.0" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } } } @@ -15137,9 +15433,9 @@ } }, "vite": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz", - "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "requires": { "esbuild": "^0.14.27", "fsevents": "~2.3.2", diff --git a/svelte_frontend/package-lock.json b/svelte_frontend/package-lock.json index e990b56d..0ec8142f 100644 --- a/svelte_frontend/package-lock.json +++ b/svelte_frontend/package-lock.json @@ -8,10 +8,10 @@ "name": "my-app", "version": "0.0.1", "dependencies": { - "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.310", + "@sveltejs/adapter-static": "next", + "@sveltejs/kit": "next", "moment": "^2.29.2", - "svelte": "^3.47.0", + "svelte": "next", "svelte-check": "^2.6.0", "svelte-preprocess": "^4.10.5", "typescript": "^4.6.3" diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 341d168a..a32be281 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -25,10 +25,10 @@ "prettier-plugin-svelte": "^2.7.0" }, "dependencies": { - "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.310", + "@sveltejs/adapter-static": "next", + "@sveltejs/kit": "next", "moment": "^2.29.2", - "svelte": "^3.47.0", + "svelte": "next", "svelte-check": "^2.6.0", "svelte-preprocess": "^4.10.5", "typescript": "^4.6.3" From 2acd1f8c168879e1a89aecd0d11355458cf6f76c Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 19 Apr 2022 21:10:12 +0200 Subject: [PATCH 041/391] Fix github actions --- .github/workflows/test_bored_gems.yml | 8 +- .github/workflows/test_svelte_frontend.yml | 2 +- svelte_frontend/package-lock.json | 274 ++++++++++----------- svelte_frontend/package.json | 2 +- 4 files changed, 146 insertions(+), 140 deletions(-) diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index 9e368d3d..7fa87fbc 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -45,9 +45,15 @@ jobs: run: | cd ${{ env.SUBDIRECTORY }} npm run build - if: ${{ matrix.node != '12' }} + + - name: Install playwright browsers + run: | + cd ${{ env.SUBDIRECTORY }} + npx playwright install + if: ${{ matrix.node != '14' }} - name: Run tests run: | cd ${{ env.SUBDIRECTORY }} npm run test + if: ${{ matrix.node != '14' }} diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index ca57e438..642c3be5 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['12', '14', '16'] + node: ['14', '16'] runs-on: ${{ matrix.os }} steps: diff --git a/svelte_frontend/package-lock.json b/svelte_frontend/package-lock.json index 0ec8142f..eab2a4ac 100644 --- a/svelte_frontend/package-lock.json +++ b/svelte_frontend/package-lock.json @@ -11,7 +11,7 @@ "@sveltejs/adapter-static": "next", "@sveltejs/kit": "next", "moment": "^2.29.2", - "svelte": "next", + "svelte": "^3.44.0", "svelte-check": "^2.6.0", "svelte-preprocess": "^4.10.5", "typescript": "^4.6.3" @@ -800,9 +800,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.312", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", - "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -889,9 +889,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", - "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==" }, "node_modules/@types/pug": { "version": "2.0.6", @@ -907,14 +907,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", - "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/type-utils": "5.19.0", - "@typescript-eslint/utils": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -967,14 +967,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", - "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" }, "engines": { @@ -994,13 +994,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", - "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1011,12 +1011,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", - "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.19.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1037,9 +1037,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", - "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1050,13 +1050,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", - "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1104,15 +1104,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", - "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1128,12 +1128,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", - "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1761,9 +1761,9 @@ } }, "node_modules/commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", "dev": true, "engines": { "node": "^12.20.0 || >=14" @@ -1962,9 +1962,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.107", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", - "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", + "version": "1.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", "devOptional": true }, "node_modules/emoji-regex": { @@ -3284,9 +3284,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dependencies": { "has": "^1.0.3" }, @@ -3880,9 +3880,9 @@ } }, "node_modules/moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", "engines": { "node": "*" } @@ -3901,9 +3901,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5009,9 +5009,9 @@ } }, "node_modules/rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "bin": { "rollup": "dist/bin/rollup" }, @@ -5201,14 +5201,14 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dev": true, "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -6677,9 +6677,9 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.312", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.312.tgz", - "integrity": "sha512-l07ct0FJQnt+y3/NSEBvHKDKVE/7syYQnFhCVZ6H+4LEYRtTNybFxUTC8jA3xpZwPqJLZz1X+Tt+Sa8ZMuVzDg==", + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", @@ -6735,9 +6735,9 @@ "dev": true }, "@types/node": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", - "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==" }, "@types/pug": { "version": "2.0.6", @@ -6753,14 +6753,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", - "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/type-utils": "5.19.0", - "@typescript-eslint/utils": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -6790,52 +6790,52 @@ } }, "@typescript-eslint/parser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", - "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", - "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" } }, "@typescript-eslint/type-utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", - "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.19.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", - "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", - "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -6864,26 +6864,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", - "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", - "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -7343,9 +7343,9 @@ "dev": true }, "commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", "dev": true }, "concat-map": { @@ -7494,9 +7494,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.107", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", - "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", + "version": "1.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", "devOptional": true }, "emoji-regex": { @@ -8403,9 +8403,9 @@ } }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "requires": { "has": "^1.0.3" } @@ -8855,9 +8855,9 @@ "dev": true }, "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" }, "mri": { "version": "1.2.0", @@ -8870,9 +8870,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" }, "natural-compare": { "version": "1.4.0", @@ -9671,9 +9671,9 @@ } }, "rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "requires": { "fsevents": "~2.3.2" } @@ -9813,14 +9813,14 @@ } }, "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dev": true, "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" } }, "sorcery": { diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index a32be281..88d304d6 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -28,7 +28,7 @@ "@sveltejs/adapter-static": "next", "@sveltejs/kit": "next", "moment": "^2.29.2", - "svelte": "next", + "svelte": "^3.44.0", "svelte-check": "^2.6.0", "svelte-preprocess": "^4.10.5", "typescript": "^4.6.3" From 0ca63b5c9ffbf9fc17058a7db98fa70e8f17b0d7 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 19 Apr 2022 22:36:21 +0200 Subject: [PATCH 042/391] Add lobbies page --- .github/workflows/test_bored_gems.yml | 2 +- bored_gems/src/routes/lobbies.svelte | 70 +++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 bored_gems/src/routes/lobbies.svelte diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index 7fa87fbc..034d26a1 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['12', '14', '16'] + node: ['14', '16'] runs-on: ${{ matrix.os }} steps: diff --git a/bored_gems/src/routes/lobbies.svelte b/bored_gems/src/routes/lobbies.svelte new file mode 100644 index 00000000..5a281992 --- /dev/null +++ b/bored_gems/src/routes/lobbies.svelte @@ -0,0 +1,70 @@ + + +
+
+
+
+
{lobbiesShown.length} Lobbies
+ {#if !lobbiesShown.length} +
No lobby available. Create one!
+ {/if} + {#each lobbiesShown as lobby, index} + + {/each} +
+
+ + +
+
+
+
Lobby Filters
+
+ + +
+
+ + +
+
+
+
From 13b4b2694eef9133b6901876d099acf778688187 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 19 Apr 2022 22:45:01 +0200 Subject: [PATCH 043/391] Reset selected index when messing with filters --- bored_gems/playwright.config.ts | 4 ++-- bored_gems/src/routes/lobbies.svelte | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/bored_gems/playwright.config.ts b/bored_gems/playwright.config.ts index fc9d8a61..4f563106 100644 --- a/bored_gems/playwright.config.ts +++ b/bored_gems/playwright.config.ts @@ -2,8 +2,8 @@ import type { PlaywrightTestConfig } from "@playwright/test" const config: PlaywrightTestConfig = { webServer: { - command: "npm run build && npm run preview", - port: 3000, + command: "npm run build && svelte-kit preview -p 2987", + port: 2987, }, } diff --git a/bored_gems/src/routes/lobbies.svelte b/bored_gems/src/routes/lobbies.svelte index 5a281992..1df11b92 100644 --- a/bored_gems/src/routes/lobbies.svelte +++ b/bored_gems/src/routes/lobbies.svelte @@ -58,11 +58,21 @@
Lobby Filters
- + (selectedLobbyIndex = -1)} + />
- + (selectedLobbyIndex = -1)} + />
From 1cd9a6968828caeda772642b74b17a7a9af57fa3 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 23 Apr 2022 03:32:00 +0200 Subject: [PATCH 044/391] Add playwright tests to svelte_frontend --- bored_gems/package-lock.json | 477 +- bored_gems/package.json | 3 - svelte_frontend/.gitignore | 8 + svelte_frontend/README.md | 1 + svelte_frontend/package-lock.json | 4284 +++++++++++++---- svelte_frontend/package.json | 9 +- svelte_frontend/playwright.config.ts | 12 + svelte_frontend/src/routes/about.svelte | 1 + .../src/routes/browserstorage.svelte | 10 +- svelte_frontend/src/routes/index.svelte | 2 + svelte_frontend/svelte.config.js | 11 +- svelte_frontend/tests/frontend.test.ts | 133 + 12 files changed, 3728 insertions(+), 1223 deletions(-) create mode 100644 svelte_frontend/.gitignore create mode 100644 svelte_frontend/playwright.config.ts create mode 100644 svelte_frontend/tests/frontend.test.ts diff --git a/bored_gems/package-lock.json b/bored_gems/package-lock.json index 1b0351dc..179fa41c 100644 --- a/bored_gems/package-lock.json +++ b/bored_gems/package-lock.json @@ -24,7 +24,6 @@ "svelte": "^3.44.0", "svelte-check": "^2.2.6", "svelte-preprocess": "^4.10.1", - "tslib": "^2.3.1", "typescript": "~4.6.2" } }, @@ -1051,33 +1050,33 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.0.tgz", - "integrity": "sha512-IXdSE/z+GQOaQWgwX7Gq48WSwRUhRczBKuHJHJxoKPGeY3S8NuJtZbOG62eTjDXq5YZBw+0c4pbRDb6OZQzWCw==", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.1.tgz", + "integrity": "sha512-w/pdDHxJx60OAB21mU9Zy/dUvWYE3MS7tSXzAITnpXM903TxbKSpsB+ZQcGy0W7FfP1E7CXOnPeprmxfUdnY2A==", "dev": true, "dependencies": { "@supabase/functions-js": "^1.3.3", - "@supabase/gotrue-js": "^1.22.12", + "@supabase/gotrue-js": "^1.22.13", "@supabase/postgrest-js": "^0.37.2", "@supabase/realtime-js": "^1.7.1", "@supabase/storage-js": "^1.7.0" } }, "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0-next.34", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.34.tgz", - "integrity": "sha512-BzZVfy39idFojauroLrE/v9paJ1/HOlS2R857ooCwaLg+RrRy6zJHWwYxNSv5e8AaZiVg7ioZZpU/2g6ZgUpaQ==", + "version": "1.0.0-next.38", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.38.tgz", + "integrity": "sha512-1//aiV/Wzebj+j5X8VLRs0vJUT3andc/0+IRQwy5ykOwjpNo5/Mj2RX8SA+t5nxBFYyJJf2kj6sszKA8LjRAQQ==", "dev": true, "dependencies": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.17", - "@sveltejs/adapter-netlify": "1.0.0-next.51", - "@sveltejs/adapter-vercel": "1.0.0-next.47" + "@sveltejs/adapter-cloudflare": "1.0.0-next.18", + "@sveltejs/adapter-netlify": "1.0.0-next.55", + "@sveltejs/adapter-vercel": "1.0.0-next.49" } }, "node_modules/@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.17", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.17.tgz", - "integrity": "sha512-B2ze5L0LsHFsZctVNy4sw0XxgV2YiVEHyMrWRo3pmpTwpu6GT5V3U2fsEoCMg/RKMazlWkyKTCuUqmcpYjjf2g==", + "version": "1.0.0-next.18", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.18.tgz", + "integrity": "sha512-iIb7ScN2hnnfVQPhRjw0FYpovYJrw4n22BFAQIg6QvOwmmGz1E3QkyBkm/tRmyY7emDfnljgXtvk4Hsoszp5Ug==", "dev": true, "dependencies": { "esbuild": "^0.14.21", @@ -1085,9 +1084,9 @@ } }, "node_modules/@sveltejs/adapter-netlify": { - "version": "1.0.0-next.51", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.51.tgz", - "integrity": "sha512-P7/cW/0z8zd8J6DOI2yxKZG0+HRMMuzfOf0yzFXX0vRwBePhKlZ/H4qhTOo2NrCmj3Len545o+ugj5gyMXl1+g==", + "version": "1.0.0-next.55", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.55.tgz", + "integrity": "sha512-LbqupuX8SdvUdCLSLiazPdU+JwwVhWGmoAopwlFkdlGOsGEag6jB+CjEYPmy81SVMSKxtYA2RqNzBPpPbURDtw==", "dev": true, "dependencies": { "@iarna/toml": "^2.2.5", @@ -1105,21 +1104,22 @@ } }, "node_modules/@sveltejs/adapter-vercel": { - "version": "1.0.0-next.47", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.47.tgz", - "integrity": "sha512-VV3vP8KqL9XOc7xfQLVhXTM5jrTme+r1qJy98u5/dhAhkdjqrGDwAKo/s7MoB3rTYxLb2b8I4QxAaoz2Y2aIBg==", + "version": "1.0.0-next.49", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.49.tgz", + "integrity": "sha512-Me0Zb10iBv+ySVMc0XgI7rdzwiMmeVHq48iVv3oXORa/et/efJVEknVSVk22q15XRqys7DhoPirf54Mz4jElFQ==", "dev": true, "dependencies": { "esbuild": "^0.14.21" } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.316", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", - "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "version": "1.0.0-next.320", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.320.tgz", + "integrity": "sha512-BDgF+gd73Gxls65rb3H2oacdQUrK8fM0X174t2kMfGS+MeNN6oZ+Kw+j0IJMzMaZSGco89+/wkPeArvDzM/2MQ==", "dev": true, "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "chokidar": "^3.5.3", "sade": "^1.7.4", "vite": "^2.9.0" }, @@ -1975,9 +1975,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", - "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "version": "1.4.118", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", + "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", "dev": true }, "node_modules/emoji-regex": { @@ -2008,9 +2008,9 @@ } }, "node_modules/es5-ext": { - "version": "0.10.60", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", - "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2050,9 +2050,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", - "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", "dev": true, "hasInstallScript": true, "bin": { @@ -2062,32 +2062,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.36", - "esbuild-android-arm64": "0.14.36", - "esbuild-darwin-64": "0.14.36", - "esbuild-darwin-arm64": "0.14.36", - "esbuild-freebsd-64": "0.14.36", - "esbuild-freebsd-arm64": "0.14.36", - "esbuild-linux-32": "0.14.36", - "esbuild-linux-64": "0.14.36", - "esbuild-linux-arm": "0.14.36", - "esbuild-linux-arm64": "0.14.36", - "esbuild-linux-mips64le": "0.14.36", - "esbuild-linux-ppc64le": "0.14.36", - "esbuild-linux-riscv64": "0.14.36", - "esbuild-linux-s390x": "0.14.36", - "esbuild-netbsd-64": "0.14.36", - "esbuild-openbsd-64": "0.14.36", - "esbuild-sunos-64": "0.14.36", - "esbuild-windows-32": "0.14.36", - "esbuild-windows-64": "0.14.36", - "esbuild-windows-arm64": "0.14.36" + "esbuild-android-64": "0.14.38", + "esbuild-android-arm64": "0.14.38", + "esbuild-darwin-64": "0.14.38", + "esbuild-darwin-arm64": "0.14.38", + "esbuild-freebsd-64": "0.14.38", + "esbuild-freebsd-arm64": "0.14.38", + "esbuild-linux-32": "0.14.38", + "esbuild-linux-64": "0.14.38", + "esbuild-linux-arm": "0.14.38", + "esbuild-linux-arm64": "0.14.38", + "esbuild-linux-mips64le": "0.14.38", + "esbuild-linux-ppc64le": "0.14.38", + "esbuild-linux-riscv64": "0.14.38", + "esbuild-linux-s390x": "0.14.38", + "esbuild-netbsd-64": "0.14.38", + "esbuild-openbsd-64": "0.14.38", + "esbuild-sunos-64": "0.14.38", + "esbuild-windows-32": "0.14.38", + "esbuild-windows-64": "0.14.38", + "esbuild-windows-arm64": "0.14.38" } }, "node_modules/esbuild-android-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", - "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", "cpu": [ "x64" ], @@ -2101,9 +2101,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", - "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", "cpu": [ "arm64" ], @@ -2117,9 +2117,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", - "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", "cpu": [ "x64" ], @@ -2133,9 +2133,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", - "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", "cpu": [ "arm64" ], @@ -2149,9 +2149,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", - "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", "cpu": [ "x64" ], @@ -2165,9 +2165,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", - "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", "cpu": [ "arm64" ], @@ -2181,9 +2181,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", - "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", "cpu": [ "ia32" ], @@ -2197,9 +2197,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", - "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", "cpu": [ "x64" ], @@ -2213,9 +2213,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", - "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", "cpu": [ "arm" ], @@ -2229,9 +2229,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", - "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", "cpu": [ "arm64" ], @@ -2245,9 +2245,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", - "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", "cpu": [ "mips64el" ], @@ -2261,9 +2261,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", - "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", "cpu": [ "ppc64" ], @@ -2277,9 +2277,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", - "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", "cpu": [ "riscv64" ], @@ -2293,9 +2293,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", - "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", "cpu": [ "s390x" ], @@ -2309,9 +2309,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", - "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", "cpu": [ "x64" ], @@ -2325,9 +2325,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", - "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", "cpu": [ "x64" ], @@ -2341,9 +2341,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", - "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", "cpu": [ "x64" ], @@ -2357,9 +2357,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", - "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", "cpu": [ "ia32" ], @@ -2373,9 +2373,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", - "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", "cpu": [ "x64" ], @@ -2389,9 +2389,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", - "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", "cpu": [ "arm64" ], @@ -4944,9 +4944,9 @@ "dev": true }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "node_modules/tsutils": { @@ -4964,12 +4964,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -5997,33 +5991,33 @@ } }, "@supabase/supabase-js": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.0.tgz", - "integrity": "sha512-IXdSE/z+GQOaQWgwX7Gq48WSwRUhRczBKuHJHJxoKPGeY3S8NuJtZbOG62eTjDXq5YZBw+0c4pbRDb6OZQzWCw==", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.1.tgz", + "integrity": "sha512-w/pdDHxJx60OAB21mU9Zy/dUvWYE3MS7tSXzAITnpXM903TxbKSpsB+ZQcGy0W7FfP1E7CXOnPeprmxfUdnY2A==", "dev": true, "requires": { "@supabase/functions-js": "^1.3.3", - "@supabase/gotrue-js": "^1.22.12", + "@supabase/gotrue-js": "^1.22.13", "@supabase/postgrest-js": "^0.37.2", "@supabase/realtime-js": "^1.7.1", "@supabase/storage-js": "^1.7.0" } }, "@sveltejs/adapter-auto": { - "version": "1.0.0-next.34", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.34.tgz", - "integrity": "sha512-BzZVfy39idFojauroLrE/v9paJ1/HOlS2R857ooCwaLg+RrRy6zJHWwYxNSv5e8AaZiVg7ioZZpU/2g6ZgUpaQ==", + "version": "1.0.0-next.38", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.38.tgz", + "integrity": "sha512-1//aiV/Wzebj+j5X8VLRs0vJUT3andc/0+IRQwy5ykOwjpNo5/Mj2RX8SA+t5nxBFYyJJf2kj6sszKA8LjRAQQ==", "dev": true, "requires": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.17", - "@sveltejs/adapter-netlify": "1.0.0-next.51", - "@sveltejs/adapter-vercel": "1.0.0-next.47" + "@sveltejs/adapter-cloudflare": "1.0.0-next.18", + "@sveltejs/adapter-netlify": "1.0.0-next.55", + "@sveltejs/adapter-vercel": "1.0.0-next.49" } }, "@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.17", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.17.tgz", - "integrity": "sha512-B2ze5L0LsHFsZctVNy4sw0XxgV2YiVEHyMrWRo3pmpTwpu6GT5V3U2fsEoCMg/RKMazlWkyKTCuUqmcpYjjf2g==", + "version": "1.0.0-next.18", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.18.tgz", + "integrity": "sha512-iIb7ScN2hnnfVQPhRjw0FYpovYJrw4n22BFAQIg6QvOwmmGz1E3QkyBkm/tRmyY7emDfnljgXtvk4Hsoszp5Ug==", "dev": true, "requires": { "esbuild": "^0.14.21", @@ -6031,9 +6025,9 @@ } }, "@sveltejs/adapter-netlify": { - "version": "1.0.0-next.51", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.51.tgz", - "integrity": "sha512-P7/cW/0z8zd8J6DOI2yxKZG0+HRMMuzfOf0yzFXX0vRwBePhKlZ/H4qhTOo2NrCmj3Len545o+ugj5gyMXl1+g==", + "version": "1.0.0-next.55", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.55.tgz", + "integrity": "sha512-LbqupuX8SdvUdCLSLiazPdU+JwwVhWGmoAopwlFkdlGOsGEag6jB+CjEYPmy81SVMSKxtYA2RqNzBPpPbURDtw==", "dev": true, "requires": { "@iarna/toml": "^2.2.5", @@ -6051,21 +6045,22 @@ } }, "@sveltejs/adapter-vercel": { - "version": "1.0.0-next.47", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.47.tgz", - "integrity": "sha512-VV3vP8KqL9XOc7xfQLVhXTM5jrTme+r1qJy98u5/dhAhkdjqrGDwAKo/s7MoB3rTYxLb2b8I4QxAaoz2Y2aIBg==", + "version": "1.0.0-next.49", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.49.tgz", + "integrity": "sha512-Me0Zb10iBv+ySVMc0XgI7rdzwiMmeVHq48iVv3oXORa/et/efJVEknVSVk22q15XRqys7DhoPirf54Mz4jElFQ==", "dev": true, "requires": { "esbuild": "^0.14.21" } }, "@sveltejs/kit": { - "version": "1.0.0-next.316", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", - "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "version": "1.0.0-next.320", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.320.tgz", + "integrity": "sha512-BDgF+gd73Gxls65rb3H2oacdQUrK8fM0X174t2kMfGS+MeNN6oZ+Kw+j0IJMzMaZSGco89+/wkPeArvDzM/2MQ==", "dev": true, "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "chokidar": "^3.5.3", "sade": "^1.7.4", "vite": "^2.9.0" } @@ -6659,9 +6654,9 @@ } }, "electron-to-chromium": { - "version": "1.4.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", - "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "version": "1.4.118", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", + "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", "dev": true }, "emoji-regex": { @@ -6689,9 +6684,9 @@ } }, "es5-ext": { - "version": "0.10.60", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", - "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", "dev": true, "requires": { "es6-iterator": "^2.0.3", @@ -6727,170 +6722,170 @@ } }, "esbuild": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", - "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", - "dev": true, - "requires": { - "esbuild-android-64": "0.14.36", - "esbuild-android-arm64": "0.14.36", - "esbuild-darwin-64": "0.14.36", - "esbuild-darwin-arm64": "0.14.36", - "esbuild-freebsd-64": "0.14.36", - "esbuild-freebsd-arm64": "0.14.36", - "esbuild-linux-32": "0.14.36", - "esbuild-linux-64": "0.14.36", - "esbuild-linux-arm": "0.14.36", - "esbuild-linux-arm64": "0.14.36", - "esbuild-linux-mips64le": "0.14.36", - "esbuild-linux-ppc64le": "0.14.36", - "esbuild-linux-riscv64": "0.14.36", - "esbuild-linux-s390x": "0.14.36", - "esbuild-netbsd-64": "0.14.36", - "esbuild-openbsd-64": "0.14.36", - "esbuild-sunos-64": "0.14.36", - "esbuild-windows-32": "0.14.36", - "esbuild-windows-64": "0.14.36", - "esbuild-windows-arm64": "0.14.36" + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.38", + "esbuild-android-arm64": "0.14.38", + "esbuild-darwin-64": "0.14.38", + "esbuild-darwin-arm64": "0.14.38", + "esbuild-freebsd-64": "0.14.38", + "esbuild-freebsd-arm64": "0.14.38", + "esbuild-linux-32": "0.14.38", + "esbuild-linux-64": "0.14.38", + "esbuild-linux-arm": "0.14.38", + "esbuild-linux-arm64": "0.14.38", + "esbuild-linux-mips64le": "0.14.38", + "esbuild-linux-ppc64le": "0.14.38", + "esbuild-linux-riscv64": "0.14.38", + "esbuild-linux-s390x": "0.14.38", + "esbuild-netbsd-64": "0.14.38", + "esbuild-openbsd-64": "0.14.38", + "esbuild-sunos-64": "0.14.38", + "esbuild-windows-32": "0.14.38", + "esbuild-windows-64": "0.14.38", + "esbuild-windows-arm64": "0.14.38" } }, "esbuild-android-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", - "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", - "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", - "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", - "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", - "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", - "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", - "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", - "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", - "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", - "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", - "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", - "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", - "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", - "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", - "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", - "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", - "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", - "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", - "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", - "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", "dev": true, "optional": true }, @@ -8727,9 +8722,9 @@ "dev": true }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tsutils": { @@ -8739,14 +8734,6 @@ "dev": true, "requires": { "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } } }, "type": { diff --git a/bored_gems/package.json b/bored_gems/package.json index f21f4f33..4be7f69b 100644 --- a/bored_gems/package.json +++ b/bored_gems/package.json @@ -4,9 +4,7 @@ "scripts": { "dev": "cross-env DEV=true svelte-kit dev", "build": "svelte-kit build", - "package": "svelte-kit package", "preview": "svelte-kit preview", - "prepare": "svelte-kit sync", "test": "playwright test", "check": "svelte-check --tsconfig tsconfig.json", "check:watch": "svelte-check --tsconfig tsconfig.json --watch", @@ -32,7 +30,6 @@ "svelte": "^3.44.0", "svelte-check": "^2.2.6", "svelte-preprocess": "^4.10.1", - "tslib": "^2.3.1", "typescript": "~4.6.2" }, "type": "module" diff --git a/svelte_frontend/.gitignore b/svelte_frontend/.gitignore new file mode 100644 index 00000000..f4401a32 --- /dev/null +++ b/svelte_frontend/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example diff --git a/svelte_frontend/README.md b/svelte_frontend/README.md index 911d2747..b4a0b405 100644 --- a/svelte_frontend/README.md +++ b/svelte_frontend/README.md @@ -1,6 +1,7 @@ # fastapi-svelte-typescript-template # Live versions + [Master branch](https://burnysc2-monorepo.netlify.app/) [Develop branch](https://burnysc2-monorepo-dev.netlify.app/) diff --git a/svelte_frontend/package-lock.json b/svelte_frontend/package-lock.json index eab2a4ac..df64d227 100644 --- a/svelte_frontend/package-lock.json +++ b/svelte_frontend/package-lock.json @@ -17,6 +17,7 @@ "typescript": "^4.6.3" }, "devDependencies": { + "@playwright/test": "^1.21.1", "@trivago/prettier-plugin-sort-imports": "^3.2.0", "@typescript-eslint/eslint-plugin": "^5.18.0", "@typescript-eslint/parser": "^5.18.0", @@ -51,25 +52,24 @@ } }, "node_modules/@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "devOptional": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, @@ -82,14 +82,29 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "devOptional": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { @@ -110,26 +125,34 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "devOptional": true, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "devOptional": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -148,19 +171,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", @@ -173,14 +183,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -198,19 +207,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-transforms": { "version": "7.17.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", @@ -230,61 +226,38 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "devOptional": true, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -302,14 +275,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -327,19 +299,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", @@ -372,21 +331,21 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/generator": { + "node_modules/@babel/highlight": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "devOptional": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/parser": { + "node_modules/@babel/parser": { "version": "7.17.9", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", @@ -398,137 +357,407 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "devOptional": true, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "devOptional": true, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", - "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "devOptional": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "devOptional": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "devOptional": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", + "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -586,6 +815,92 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/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, + "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/@jest/types/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/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 + }, + "node_modules/@jest/types/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -770,10 +1085,58 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "node_modules/@playwright/test": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.21.1.tgz", + "integrity": "sha512-XkkTXl5gvEm4fciqeHvY5IuSS/OfQef0MO6RpBNmtm6EuYSdtUvP/sDVuWRKsDqyVdB3WSA0az7iSw79f2//JQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.16.7", + "@babel/core": "7.16.12", + "@babel/helper-plugin-utils": "7.16.7", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-dynamic-import": "7.16.7", + "@babel/plugin-proposal-export-namespace-from": "7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.16.7", + "@babel/plugin-proposal-numeric-separator": "7.16.7", + "@babel/plugin-proposal-optional-chaining": "7.16.7", + "@babel/plugin-proposal-private-methods": "7.16.11", + "@babel/plugin-proposal-private-property-in-object": "7.16.7", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.16.8", + "@babel/preset-typescript": "7.16.7", + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "expect": "27.2.5", + "jest-matcher-utils": "27.2.5", + "json5": "2.2.1", + "mime": "3.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "open": "8.4.0", + "pirates": "4.0.4", + "playwright-core": "1.21.1", + "rimraf": "3.0.2", + "source-map-support": "0.4.18", + "stack-utils": "2.0.5", + "yazl": "2.5.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -800,11 +1163,12 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.316", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", - "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "version": "1.0.0-next.320", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.320.tgz", + "integrity": "sha512-BDgF+gd73Gxls65rb3H2oacdQUrK8fM0X174t2kMfGS+MeNN6oZ+Kw+j0IJMzMaZSGco89+/wkPeArvDzM/2MQ==", "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "chokidar": "^3.5.3", "sade": "^1.7.4", "vite": "^2.9.0" }, @@ -843,6 +1207,27 @@ } } }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -882,6 +1267,112 @@ "prettier": "2.x" } }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/parser": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -906,6 +1397,37 @@ "@types/node": "*" } }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", @@ -1302,6 +1824,15 @@ "node": ">=8" } }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1471,9 +2002,9 @@ "dev": true }, "node_modules/builtins": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", - "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "dependencies": { "semver": "^7.0.0" @@ -1507,16 +2038,16 @@ } }, "node_modules/cacache": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.4.tgz", - "integrity": "sha512-U0D4wF3/W8ZgK4qDA5fTtOVSr0gaDfd5aa7tUdAV0uukVWKsAIn6SzXQCoVlg7RWZiJa+bcsM3/pXLumGaL2Ug==", + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.6.tgz", + "integrity": "sha512-9a/MLxGaw3LEGes0HaPez2RgZWDV6X0jrgChsuxfEh8xoDoYGxaGrkMe7Dlyjrb655tA/b8fX0qlUg6Ii5MBvw==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", - "glob": "^7.2.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", "minipass": "^3.1.6", @@ -1553,21 +2084,6 @@ "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -1577,6 +2093,19 @@ "node": ">=8" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "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", @@ -1653,17 +2182,6 @@ "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -1718,6 +2236,15 @@ "node": ">= 0.2.0" } }, + "node_modules/cli-table/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -1752,21 +2279,21 @@ } }, "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, "engines": { "node": ">=0.1.90" } }, "node_modules/commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">= 12" } }, "node_modules/concat-map": { @@ -1848,9 +2375,10 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "devOptional": true, "dependencies": { "ms": "2.1.2" }, @@ -1863,6 +2391,12 @@ } } }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -1896,6 +2430,31 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -1919,6 +2478,15 @@ "node": ">=8" } }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1962,9 +2530,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", - "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "version": "1.4.118", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", + "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", "devOptional": true }, "node_modules/emoji-regex": { @@ -2013,9 +2581,9 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "node_modules/esbuild": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", - "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -2024,32 +2592,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.36", - "esbuild-android-arm64": "0.14.36", - "esbuild-darwin-64": "0.14.36", - "esbuild-darwin-arm64": "0.14.36", - "esbuild-freebsd-64": "0.14.36", - "esbuild-freebsd-arm64": "0.14.36", - "esbuild-linux-32": "0.14.36", - "esbuild-linux-64": "0.14.36", - "esbuild-linux-arm": "0.14.36", - "esbuild-linux-arm64": "0.14.36", - "esbuild-linux-mips64le": "0.14.36", - "esbuild-linux-ppc64le": "0.14.36", - "esbuild-linux-riscv64": "0.14.36", - "esbuild-linux-s390x": "0.14.36", - "esbuild-netbsd-64": "0.14.36", - "esbuild-openbsd-64": "0.14.36", - "esbuild-sunos-64": "0.14.36", - "esbuild-windows-32": "0.14.36", - "esbuild-windows-64": "0.14.36", - "esbuild-windows-arm64": "0.14.36" + "esbuild-android-64": "0.14.38", + "esbuild-android-arm64": "0.14.38", + "esbuild-darwin-64": "0.14.38", + "esbuild-darwin-arm64": "0.14.38", + "esbuild-freebsd-64": "0.14.38", + "esbuild-freebsd-arm64": "0.14.38", + "esbuild-linux-32": "0.14.38", + "esbuild-linux-64": "0.14.38", + "esbuild-linux-arm": "0.14.38", + "esbuild-linux-arm64": "0.14.38", + "esbuild-linux-mips64le": "0.14.38", + "esbuild-linux-ppc64le": "0.14.38", + "esbuild-linux-riscv64": "0.14.38", + "esbuild-linux-s390x": "0.14.38", + "esbuild-netbsd-64": "0.14.38", + "esbuild-openbsd-64": "0.14.38", + "esbuild-sunos-64": "0.14.38", + "esbuild-windows-32": "0.14.38", + "esbuild-windows-64": "0.14.38", + "esbuild-windows-arm64": "0.14.38" } }, "node_modules/esbuild-android-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", - "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", "cpu": [ "x64" ], @@ -2062,9 +2630,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", - "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", "cpu": [ "arm64" ], @@ -2077,9 +2645,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", - "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", "cpu": [ "x64" ], @@ -2092,9 +2660,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", - "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", "cpu": [ "arm64" ], @@ -2107,9 +2675,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", - "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", "cpu": [ "x64" ], @@ -2122,9 +2690,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", - "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", "cpu": [ "arm64" ], @@ -2137,9 +2705,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", - "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", "cpu": [ "ia32" ], @@ -2152,9 +2720,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", - "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", "cpu": [ "x64" ], @@ -2167,9 +2735,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", - "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", "cpu": [ "arm" ], @@ -2182,9 +2750,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", - "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", "cpu": [ "arm64" ], @@ -2197,9 +2765,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", - "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", "cpu": [ "mips64el" ], @@ -2212,9 +2780,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", - "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", "cpu": [ "ppc64" ], @@ -2227,9 +2795,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", - "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", "cpu": [ "riscv64" ], @@ -2242,9 +2810,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", - "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", "cpu": [ "s390x" ], @@ -2257,9 +2825,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", - "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", "cpu": [ "x64" ], @@ -2272,9 +2840,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", - "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", "cpu": [ "x64" ], @@ -2287,9 +2855,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", - "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", "cpu": [ "x64" ], @@ -2302,9 +2870,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", - "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", "cpu": [ "ia32" ], @@ -2317,9 +2885,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", - "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", "cpu": [ "x64" ], @@ -2332,9 +2900,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", - "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", "cpu": [ "arm64" ], @@ -2374,12 +2942,12 @@ } }, "node_modules/eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.2.2", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -2582,6 +3150,18 @@ "node": ">=4.0" } }, + "node_modules/eslint/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, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/eslint/node_modules/globals": { "version": "13.13.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", @@ -2697,36 +3277,74 @@ "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 - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/expect": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", + "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "dev": true, "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" + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.5", + "jest-message-util": "^27.2.5", + "jest-regex-util": "^27.0.6" }, "engines": { - "node": ">=8.6.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.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==", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "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 + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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-json-stable-stringify": { @@ -2755,6 +3373,15 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -2897,6 +3524,20 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -2910,46 +3551,70 @@ } }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { "pump": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", + "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^5.0.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { - "node": "*" + "node": ">=12" }, "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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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, "dependencies": { - "is-glob": "^4.0.3" + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" } }, "node_modules/global-dirs": { @@ -3037,6 +3702,18 @@ "node": ">=8.6" } }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -3062,6 +3739,30 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -3294,6 +3995,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3388,6 +4104,18 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -3406,85 +4134,369 @@ "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", "dev": true }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, - "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==", - "devOptional": true - }, - "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==", + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, - "bin": { - "jsesc": "bin/jsesc" + "node_modules/jest-diff/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, + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "node_modules/jest-diff/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, + "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/json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "node_modules/jest-diff/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, "dependencies": { - "jju": "^1.1.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "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==", + "node_modules/jest-diff/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 }, - "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "node_modules/jest-diff/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, + "engines": { + "node": ">=8" + } }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "devOptional": true, - "bin": { - "json5": "lib/cli.js" + "node_modules/jest-diff/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, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/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, + "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/jest-matcher-utils/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/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 + }, + "node_modules/jest-matcher-utils/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/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, + "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/jest-message-util/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/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 + }, + "node_modules/jest-message-util/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", + "dev": true + }, + "node_modules/jpeg-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", + "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", + "dev": true + }, + "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==", + "devOptional": true + }, + "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, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "dev": true, + "dependencies": { + "jju": "^1.1.0" + } + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonlines": { @@ -3635,7 +4647,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -3734,6 +4746,18 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -3752,9 +4776,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3896,9 +4920,10 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.3", @@ -3950,12 +4975,32 @@ "node": "^12.22 || ^14.13 || >=16" } }, - "node_modules/node-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { "yallist": "^4.0.0" }, "engines": { @@ -4168,6 +5213,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/npm-check-updates/node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/npm-check-updates/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4216,6 +5270,25 @@ "node": ">=10" } }, + "node_modules/npm-check-updates/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-check-updates/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/npm-check-updates/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4315,12 +5388,12 @@ } }, "node_modules/npm-packlist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.0.0.tgz", - "integrity": "sha512-uU20UwM4Hogfab1Q7htJbhcyafM9lGHxOrDjkKvR2S3z7Ds0uRaESk0cXctczk+ABT4DZWNwjB10xlurFdEwZg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.0.2.tgz", + "integrity": "sha512-jLhcNisUgpz6v2KC75qSeEYAM8UBMYjQ2OhlCOJjB4Ovu7XXnD25UqZ6hOQNeGShL/2ju3LL2E/zBbsuzkIQ8w==", "dev": true, "dependencies": { - "glob": "^7.2.0", + "glob": "^8.0.1", "ignore-walk": "^5.0.1", "npm-bundled": "^1.1.2", "npm-normalize-package-bin": "^1.0.1" @@ -4393,18 +5466,45 @@ } }, "node_modules/npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { @@ -4415,6 +5515,23 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4608,6 +5725,12 @@ "node": ">=8" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -4624,6 +5747,104 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pirates": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "dependencies": { + "pngjs": "^4.0.1" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/playwright-core": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.21.1.tgz", + "integrity": "sha512-SbK5dEsai9ZUKlxcinqegorBq4GnftXd4/GfW+pLsdQIQWrLCM/JNh6YQ2Rf2enVykXCejtoXW8L5vJXBBVSJQ==", + "dev": true, + "dependencies": { + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "jpeg-js": "0.4.3", + "mime": "3.0.0", + "pixelmatch": "5.2.1", + "pngjs": "6.0.0", + "progress": "2.0.3", + "proper-lockfile": "4.1.2", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "socks-proxy-agent": "6.1.1", + "stack-utils": "2.0.5", + "ws": "8.4.2", + "yauzl": "2.10.0", + "yazl": "2.5.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/playwright-core/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/playwright-core/node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "engines": { + "node": ">=12.13.0" + } + }, "node_modules/postcss": { "version": "8.4.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", @@ -4690,6 +5911,32 @@ "svelte": "^3.2.0" } }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/proc-log": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", @@ -4749,6 +5996,23 @@ "node": ">=6" } }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4835,19 +6099,25 @@ "node": ">=0.10.0" } }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/read-package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", - "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", "dev": true, "dependencies": { - "glob": "^7.2.0", + "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", "npm-normalize-package-bin": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-package-json-fast": { @@ -5008,6 +6278,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { "version": "2.70.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", @@ -5079,6 +6369,25 @@ "rimraf": "^2.5.2" } }, + "node_modules/sander/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sander/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -5246,22 +6555,12 @@ } }, "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "source-map": "^0.5.6" } }, "node_modules/sourcemap-codec": { @@ -5322,6 +6621,27 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6029,6 +7349,27 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", @@ -6053,6 +7394,25 @@ "node": ">= 6" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -6083,40 +7443,48 @@ "devOptional": true }, "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "devOptional": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "devOptional": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, "@babel/helper-compilation-targets": { "version": "7.17.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", @@ -6129,6 +7497,21 @@ "semver": "^6.3.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, "@babel/helper-environment-visitor": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", @@ -6136,18 +7519,6 @@ "devOptional": true, "requires": { "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-function-name": { @@ -6158,18 +7529,6 @@ "requires": { "@babel/template": "^7.16.7", "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-hoist-variables": { @@ -6179,18 +7538,15 @@ "devOptional": true, "requires": { "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" } }, "@babel/helper-module-imports": { @@ -6200,18 +7556,6 @@ "devOptional": true, "requires": { "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-transforms": { @@ -6228,53 +7572,34 @@ "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "devOptional": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "devOptional": true - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { @@ -6284,18 +7609,15 @@ "devOptional": true, "requires": { "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { @@ -6305,18 +7627,6 @@ "devOptional": true, "requires": { "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-validator-identifier": { @@ -6340,72 +7650,260 @@ "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "devOptional": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "devOptional": true - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "devOptional": true, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "devOptional": true + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" } }, - "@babel/parser": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", - "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", - "devOptional": true - }, "@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", @@ -6415,58 +7913,40 @@ "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "devOptional": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "devOptional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "devOptional": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "devOptional": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", + "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -6514,6 +7994,70 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6653,6 +8197,48 @@ "read-package-json-fast": "^2.0.3" } }, + "@playwright/test": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.21.1.tgz", + "integrity": "sha512-XkkTXl5gvEm4fciqeHvY5IuSS/OfQef0MO6RpBNmtm6EuYSdtUvP/sDVuWRKsDqyVdB3WSA0az7iSw79f2//JQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.16.7", + "@babel/core": "7.16.12", + "@babel/helper-plugin-utils": "7.16.7", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-dynamic-import": "7.16.7", + "@babel/plugin-proposal-export-namespace-from": "7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.16.7", + "@babel/plugin-proposal-numeric-separator": "7.16.7", + "@babel/plugin-proposal-optional-chaining": "7.16.7", + "@babel/plugin-proposal-private-methods": "7.16.11", + "@babel/plugin-proposal-private-property-in-object": "7.16.7", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.16.8", + "@babel/preset-typescript": "7.16.7", + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "expect": "27.2.5", + "jest-matcher-utils": "27.2.5", + "json5": "2.2.1", + "mime": "3.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "open": "8.4.0", + "pirates": "4.0.4", + "playwright-core": "1.21.1", + "rimraf": "3.0.2", + "source-map-support": "0.4.18", + "stack-utils": "2.0.5", + "yazl": "2.5.1" + } + }, "@rollup/pluginutils": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", @@ -6677,11 +8263,12 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.316", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", - "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", + "version": "1.0.0-next.320", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.320.tgz", + "integrity": "sha512-BDgF+gd73Gxls65rb3H2oacdQUrK8fM0X174t2kMfGS+MeNN6oZ+Kw+j0IJMzMaZSGco89+/wkPeArvDzM/2MQ==", "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", + "chokidar": "^3.5.3", "sade": "^1.7.4", "vite": "^2.9.0" } @@ -6696,6 +8283,21 @@ "kleur": "^4.1.4", "magic-string": "^0.26.1", "svelte-hmr": "^0.14.11" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "@szmarczak/http-timer": { @@ -6726,6 +8328,101 @@ "@babel/types": "7.13.0", "javascript-natural-sort": "0.7.1", "lodash": "4.17.21" + }, + "dependencies": { + "@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", + "dev": true + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" } }, "@types/json-schema": { @@ -6752,6 +8449,37 @@ "@types/node": "*" } }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", @@ -7009,6 +8737,15 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -7128,9 +8865,9 @@ "dev": true }, "builtins": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", - "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "requires": { "semver": "^7.0.0" @@ -7157,16 +8894,16 @@ } }, "cacache": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.4.tgz", - "integrity": "sha512-U0D4wF3/W8ZgK4qDA5fTtOVSr0gaDfd5aa7tUdAV0uukVWKsAIn6SzXQCoVlg7RWZiJa+bcsM3/pXLumGaL2Ug==", + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.6.tgz", + "integrity": "sha512-9a/MLxGaw3LEGes0HaPez2RgZWDV6X0jrgChsuxfEh8xoDoYGxaGrkMe7Dlyjrb655tA/b8fX0qlUg6Ii5MBvw==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", - "glob": "^7.2.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", "minipass": "^3.1.6", @@ -7197,15 +8934,6 @@ "responselike": "^1.0.2" }, "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -7214,6 +8942,16 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -7255,16 +8993,6 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } } }, "chownr": { @@ -7304,6 +9032,14 @@ "dev": true, "requires": { "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } } }, "clone-response": { @@ -7337,15 +9073,15 @@ "dev": true }, "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "concat-map": { @@ -7409,11 +9145,20 @@ "dev": true }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "devOptional": true, "requires": { "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + } } }, "decompress-response": { @@ -7443,6 +9188,22 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -7460,6 +9221,12 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7494,9 +9261,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", - "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "version": "1.4.118", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", + "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", "devOptional": true }, "emoji-regex": { @@ -7542,150 +9309,150 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, "esbuild": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", - "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", - "requires": { - "esbuild-android-64": "0.14.36", - "esbuild-android-arm64": "0.14.36", - "esbuild-darwin-64": "0.14.36", - "esbuild-darwin-arm64": "0.14.36", - "esbuild-freebsd-64": "0.14.36", - "esbuild-freebsd-arm64": "0.14.36", - "esbuild-linux-32": "0.14.36", - "esbuild-linux-64": "0.14.36", - "esbuild-linux-arm": "0.14.36", - "esbuild-linux-arm64": "0.14.36", - "esbuild-linux-mips64le": "0.14.36", - "esbuild-linux-ppc64le": "0.14.36", - "esbuild-linux-riscv64": "0.14.36", - "esbuild-linux-s390x": "0.14.36", - "esbuild-netbsd-64": "0.14.36", - "esbuild-openbsd-64": "0.14.36", - "esbuild-sunos-64": "0.14.36", - "esbuild-windows-32": "0.14.36", - "esbuild-windows-64": "0.14.36", - "esbuild-windows-arm64": "0.14.36" + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", + "requires": { + "esbuild-android-64": "0.14.38", + "esbuild-android-arm64": "0.14.38", + "esbuild-darwin-64": "0.14.38", + "esbuild-darwin-arm64": "0.14.38", + "esbuild-freebsd-64": "0.14.38", + "esbuild-freebsd-arm64": "0.14.38", + "esbuild-linux-32": "0.14.38", + "esbuild-linux-64": "0.14.38", + "esbuild-linux-arm": "0.14.38", + "esbuild-linux-arm64": "0.14.38", + "esbuild-linux-mips64le": "0.14.38", + "esbuild-linux-ppc64le": "0.14.38", + "esbuild-linux-riscv64": "0.14.38", + "esbuild-linux-s390x": "0.14.38", + "esbuild-netbsd-64": "0.14.38", + "esbuild-openbsd-64": "0.14.38", + "esbuild-sunos-64": "0.14.38", + "esbuild-windows-32": "0.14.38", + "esbuild-windows-64": "0.14.38", + "esbuild-windows-arm64": "0.14.38" } }, "esbuild-android-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", - "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", - "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", - "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", - "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", - "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", - "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", - "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", - "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", - "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", - "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", - "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", - "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", - "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", - "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", - "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", - "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", - "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", - "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", - "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.36", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", - "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", "optional": true }, "escalade": { @@ -7707,12 +9474,12 @@ "devOptional": true }, "eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.2.2", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -7805,6 +9572,15 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { "version": "13.13.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", @@ -7940,6 +9716,40 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "expect": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", + "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.2.5", + "jest-message-util": "^27.2.5", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7956,16 +9766,6 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } } }, "fast-json-stable-stringify": { @@ -7994,6 +9794,15 @@ "reusify": "^1.0.4" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -8102,6 +9911,17 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "devOptional": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -8109,34 +9929,54 @@ "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", + "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^5.0.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "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, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { - "is-glob": "^4.0.3" + "is-glob": "^4.0.1" } }, "global-dirs": { @@ -8203,6 +10043,17 @@ "p-cancelable": "^1.0.0", "to-readable-stream": "^1.0.0", "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, "graceful-fs": { @@ -8224,6 +10075,21 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "devOptional": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "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 + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -8410,6 +10276,12 @@ "has": "^1.0.3" } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8429,67 +10301,282 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "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 + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "dev": true + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "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 - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "jju": { @@ -8498,6 +10585,12 @@ "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", "dev": true }, + "jpeg-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", + "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8672,7 +10765,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true + "dev": true }, "lodash.merge": { "version": "4.6.2", @@ -8747,6 +10840,12 @@ "picomatch": "^2.3.1" } }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -8759,9 +10858,9 @@ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } @@ -8865,9 +10964,10 @@ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "nanoid": { "version": "3.3.3", @@ -8904,6 +11004,20 @@ "which": "^2.0.2" }, "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -9071,6 +11185,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9104,6 +11224,22 @@ "lru-cache": "^6.0.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9182,12 +11318,12 @@ } }, "npm-packlist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.0.0.tgz", - "integrity": "sha512-uU20UwM4Hogfab1Q7htJbhcyafM9lGHxOrDjkKvR2S3z7Ds0uRaESk0cXctczk+ABT4DZWNwjB10xlurFdEwZg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.0.2.tgz", + "integrity": "sha512-jLhcNisUgpz6v2KC75qSeEYAM8UBMYjQ2OhlCOJjB4Ovu7XXnD25UqZ6hOQNeGShL/2ju3LL2E/zBbsuzkIQ8w==", "dev": true, "requires": { - "glob": "^7.2.0", + "glob": "^8.0.1", "ignore-walk": "^5.0.1", "npm-bundled": "^1.1.2", "npm-normalize-package-bin": "^1.0.1" @@ -9241,17 +11377,35 @@ } }, "npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" } }, + "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 + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9260,6 +11414,17 @@ "wrappy": "1" } }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -9396,6 +11561,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -9406,6 +11577,84 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "pirates": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true + }, + "pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "requires": { + "pngjs": "^4.0.1" + }, + "dependencies": { + "pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true + } + } + }, + "playwright-core": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.21.1.tgz", + "integrity": "sha512-SbK5dEsai9ZUKlxcinqegorBq4GnftXd4/GfW+pLsdQIQWrLCM/JNh6YQ2Rf2enVykXCejtoXW8L5vJXBBVSJQ==", + "dev": true, + "requires": { + "colors": "1.4.0", + "commander": "8.3.0", + "debug": "4.3.3", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "jpeg-js": "0.4.3", + "mime": "3.0.0", + "pixelmatch": "5.2.1", + "pngjs": "6.0.0", + "progress": "2.0.3", + "proper-lockfile": "4.1.2", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "socks-proxy-agent": "6.1.1", + "stack-utils": "2.0.5", + "ws": "8.4.2", + "yauzl": "2.10.0", + "yazl": "2.5.1" + }, + "dependencies": { + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + } + } + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true + }, "postcss": { "version": "8.4.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", @@ -9441,6 +11690,25 @@ "dev": true, "requires": {} }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "proc-log": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", @@ -9487,6 +11755,23 @@ } } }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -9549,13 +11834,19 @@ "require-from-string": "^2.0.2" } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "read-package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", - "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", "dev": true, "requires": { - "glob": "^7.2.0", + "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", "npm-normalize-package-bin": "^1.0.1" @@ -9668,6 +11959,22 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rollup": { @@ -9718,6 +12025,19 @@ "rimraf": "^2.5.2" }, "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -9846,21 +12166,12 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map": "^0.5.6" } }, "sourcemap-codec": { @@ -9915,6 +12226,23 @@ "minipass": "^3.1.1" } }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10395,6 +12723,13 @@ "typedarray-to-buffer": "^3.1.5" } }, + "ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "requires": {} + }, "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", @@ -10413,6 +12748,25 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 88d304d6..865320ff 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -5,14 +5,17 @@ "dev": "cross-env BACKEND_SERVER='localhost:8000' svelte-kit dev", "build": "svelte-kit build", "preview": "svelte-kit preview", + "preview2": "cross-env BACKEND_SERVER='localhost:7899' npm run build && cross-env BACKEND_SERVER='localhost:7899' svelte-kit preview -p 3000", + "test": "playwright test", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", - "update": "npx npm-check-updates -u && npm run prune", + "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore . --max-warnings 0", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write './**/*.{svelte,ts}'" + "update": "npx npm-check-updates -u && npm run prune" }, "devDependencies": { + "@playwright/test": "^1.21.1", "@trivago/prettier-plugin-sort-imports": "^3.2.0", "@typescript-eslint/eslint-plugin": "^5.18.0", "@typescript-eslint/parser": "^5.18.0", diff --git a/svelte_frontend/playwright.config.ts b/svelte_frontend/playwright.config.ts new file mode 100644 index 00000000..26406c20 --- /dev/null +++ b/svelte_frontend/playwright.config.ts @@ -0,0 +1,12 @@ +import type { PlaywrightTestConfig } from "@playwright/test" + +const config: PlaywrightTestConfig = { + webServer: { + command: "npm run build && svelte-kit preview -p 2987", + port: 2987, + }, + repeatEach: 1, + timeout: 5000, +} + +export default config diff --git a/svelte_frontend/src/routes/about.svelte b/svelte_frontend/src/routes/about.svelte index 553cee67..28bcd66b 100644 --- a/svelte_frontend/src/routes/about.svelte +++ b/svelte_frontend/src/routes/about.svelte @@ -9,6 +9,7 @@

This is my about page! Here I display features of svelte that I have implemented

Session Storage
-
{sessionStorageValue}
+
{sessionStorageValue}
+ +
+
+
diff --git a/bored_gems/src/components/lobby/JoinLobbyModal.svelte b/bored_gems/src/components/lobby/JoinLobbyModal.svelte new file mode 100644 index 00000000..703aef42 --- /dev/null +++ b/bored_gems/src/components/lobby/JoinLobbyModal.svelte @@ -0,0 +1,18 @@ + + +
+ +
+ custom username lobby password Cancel Join +
+ +
diff --git a/bored_gems/src/components/lobby/LobbiesRow.svelte b/bored_gems/src/components/lobby/LobbiesRow.svelte new file mode 100644 index 00000000..aed4aa47 --- /dev/null +++ b/bored_gems/src/components/lobby/LobbiesRow.svelte @@ -0,0 +1,46 @@ + + + + + + + + + + + + {#each lobbiesShown as lobbyData, index} + { + setSelectedLobbyIndex(index) + }} + > + + + + + {/each} + +
CreatorLobby namePlayers
+ {lobbyData.name} + + {lobbyData.creator} + + {lobbyData.players} / {lobbyData.playersMax} +
diff --git a/bored_gems/src/routes/index.svelte b/bored_gems/src/routes/index.svelte index 5982b0ae..2a74ab30 100644 --- a/bored_gems/src/routes/index.svelte +++ b/bored_gems/src/routes/index.svelte @@ -1,2 +1,3 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+ diff --git a/bored_gems/src/routes/lobbies.svelte b/bored_gems/src/routes/lobbies.svelte index 1df11b92..8248e904 100644 --- a/bored_gems/src/routes/lobbies.svelte +++ b/bored_gems/src/routes/lobbies.svelte @@ -1,8 +1,16 @@ -
-
-
-
-
{lobbiesShown.length} Lobbies
- {#if !lobbiesShown.length} -
No lobby available. Create one!
- {/if} - {#each lobbiesShown as lobby, index} +{#if joinLobbyShown} + +{/if} +{#if createLobbyShown} + +{:else} +
+
+
+
+
{lobbiesShown.length} Lobbies
+ {#if !lobbiesShown.length} +
No lobby available. Create one!
+ {:else} + + {/if} +
+
+ -
- {lobby.name} -
-
- {lobby.players} / {lobby.playersMax} -
- - {/each} -
-
- - -
-
-
-
Lobby Filters
-
- (selectedLobbyIndex = -1)} - /> - +
-
- (selectedLobbyIndex = -1)} - /> - +
+
Lobby Filters
+
+ (selectedLobbyIndex = -1)} + /> + +
+
+ (selectedLobbyIndex = -1)} + /> + +
-
+{/if} diff --git a/bored_gems/tests/test.ts b/bored_gems/tests/test.ts index 6649c7de..02fa1646 100644 --- a/bored_gems/tests/test.ts +++ b/bored_gems/tests/test.ts @@ -1,6 +1,6 @@ import { expect, test } from "@playwright/test" -test("index page has expected h1", async ({ page }) => { +test("index page has expected text", async ({ page }) => { await page.goto("/") - expect(await page.textContent("h1")).toBe("Welcome to SvelteKit") + expect(await page.textContent("a")).toBe("Go to lobbies") }) diff --git a/fastapi_server/helper/websocket_manager.py b/fastapi_server/helper/websocket_manager.py index 5f409a72..169f46cf 100644 --- a/fastapi_server/helper/websocket_manager.py +++ b/fastapi_server/helper/websocket_manager.py @@ -1,6 +1,7 @@ +from __future__ import annotations + import json from dataclasses import dataclass, field -from typing import List from loguru import logger from starlette.websockets import WebSocket @@ -8,13 +9,13 @@ class Handler: - async def handle_data(self, websocket_manager: 'WebsocketManager', websocket: WebSocket, data_json: dict): + async def handle_data(self, websocket_manager: WebsocketManager, websocket: WebSocket, data_json: dict): raise NotImplementedError() @dataclass class WebsocketManager: - active_connections: List[WebSocket] = field(default_factory=list) + active_connections: list[WebSocket] = field(default_factory=list) handler: Handler = field(default_factory=Handler) async def connect(self, websocket: WebSocket): diff --git a/fastapi_server/routes/replay_parser.py b/fastapi_server/routes/replay_parser.py index 279d6d19..fb010940 100644 --- a/fastapi_server/routes/replay_parser.py +++ b/fastapi_server/routes/replay_parser.py @@ -44,18 +44,16 @@ def from_replay_object(player_object: Player): ], queues=[ { - 'gameloop': - queue['gameloop'], - 'supply_blocked': - queue['supply_blocked'], + 'gameloop': queue['gameloop'], + 'supply_blocked': queue['supply_blocked'], 'queues': [ { - 'structure_name': - structure.name, - 'structure_queue': - [{ - 'name': structure_queue_item.name, - } for structure_queue_item in structure_queue] + 'structure_name': structure.name, + 'structure_queue': [ + { + 'name': structure_queue_item.name, + } for structure_queue_item in structure_queue + ] } for structure, structure_queue in queue['queues'].items() ] } for queue in player_object.queues diff --git a/fastapi_server/routes/todolist.py b/fastapi_server/routes/todolist.py index 16e3c304..fd8e052c 100644 --- a/fastapi_server/routes/todolist.py +++ b/fastapi_server/routes/todolist.py @@ -102,6 +102,7 @@ async def create_new_todo3(item: Item): @todo_list_router.delete('/api/{todo_id}') async def remove_todo(todo_id: int) -> bool: """ Example of using /api/itemid with DELETE request """ + # pylint: disable=W0603 global TODOS logger.info(f'Attempting to remove todo id: {todo_id}') count_before = len(TODOS) diff --git a/fastapi_server/test/base_test.py b/fastapi_server/test/base_test.py index 76d6b2e0..e4af1a2d 100644 --- a/fastapi_server/test/base_test.py +++ b/fastapi_server/test/base_test.py @@ -9,9 +9,11 @@ class BaseTest: method_client: TestClient = None # type: ignore + # pylint: disable=R0201 def setup_method(self, _method): BaseTest.method_client = TestClient(app) + # pylint: disable=R0201 def teardown_method(self, _method): BaseTest.method_client = None @@ -24,6 +26,7 @@ def method_client_context(cls): finally: cls.example_client = None + # pylint: disable=R0201 @pytest.fixture(name='method_client_fixture') def method_client_fixture(self) -> TestClient: # type: ignore with BaseTest.method_client_context() as client: diff --git a/poetry.lock b/poetry.lock index f18679e5..dca3355c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -73,7 +73,7 @@ trio = ["trio (>=0.16)"] [[package]] name = "asgiref" -version = "3.5.0" +version = "3.5.1" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -84,7 +84,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.3" +version = "2.11.4" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -127,7 +127,7 @@ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (> [[package]] name = "bcrypt" -version = "3.2.0" +version = "3.2.2" description = "Modern password hashing for your software and your servers" category = "main" optional = false @@ -135,7 +135,6 @@ python-versions = ">=3.6" [package.dependencies] cffi = ">=1.1" -six = ">=1.4.1" [package.extras] tests = ["pytest (>=3.2.1,!=3.3.0)"] @@ -143,7 +142,7 @@ typecheck = ["mypy"] [[package]] name = "beanie" -version = "1.10.8" +version = "1.11.0" description = "Asynchronous Python ODM for MongoDB" category = "main" optional = false @@ -196,11 +195,14 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "7.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" @@ -256,7 +258,7 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "36.0.2" +version = "37.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -271,7 +273,7 @@ docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "dataclasses-json" @@ -318,7 +320,7 @@ python-versions = ">=3" [[package]] name = "fastapi" -version = "0.70.1" +version = "0.76.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "main" optional = false @@ -326,13 +328,13 @@ python-versions = ">=3.6.1" [package.dependencies] pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" -starlette = "0.16.0" +starlette = "0.18.0" [package.extras] -all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] -test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] +all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer (>=0.4.1,<0.5.0)", "pyyaml (>=5.3.1,<7.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==22.3.0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==4.2.1)", "types-orjson (==3.6.2)", "types-dataclasses (==0.6.5)"] [[package]] name = "filelock" @@ -383,7 +385,7 @@ python-versions = ">=3.6" [[package]] name = "hypothesis" -version = "6.45.0" +version = "6.46.2" description = "A library for property-based testing" category = "dev" optional = false @@ -411,7 +413,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] [[package]] name = "identify" -version = "2.4.12" +version = "2.5.0" description = "File identification library for Python" category = "dev" optional = false @@ -513,7 +515,7 @@ python-versions = ">=3.6" [[package]] name = "loguru" -version = "0.5.3" +version = "0.6.0" description = "Python logging made (stupidly) simple" category = "main" optional = false @@ -524,7 +526,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"] +dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"] [[package]] name = "lorem-text" @@ -613,14 +615,14 @@ python-versions = ">=3.6" [[package]] name = "mongoengine" -version = "0.23.1" +version = "0.24.1" description = "MongoEngine is a Python Object-Document Mapper for working with MongoDB." category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -pymongo = ">=3.4,<4.0" +pymongo = ">=3.4,<5.0" [[package]] name = "motor" @@ -654,7 +656,7 @@ python-versions = ">=3.7" [[package]] name = "mypy" -version = "0.930" +version = "0.950" description = "Optional static typing for Python" category = "dev" optional = false @@ -662,12 +664,13 @@ python-versions = ">=3.6" [package.dependencies] mypy-extensions = ">=0.4.3" -tomli = ">=1.1.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=3.10" [package.extras] dmypy = ["psutil (>=4.0)"] python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] [[package]] name = "mypy-extensions" @@ -706,7 +709,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "paramiko" -version = "2.10.3" +version = "2.10.4" description = "SSH2 protocol library" category = "main" optional = false @@ -746,11 +749,15 @@ pytzdata = ">=2020.1" [[package]] name = "pillow" -version = "8.4.0" +version = "9.1.0" description = "Python Imaging Library (Fork)" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" + +[package.extras] +docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" @@ -792,7 +799,7 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "2.18.1" +version = "2.19.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." category = "dev" optional = false @@ -866,15 +873,15 @@ python-versions = "*" [[package]] name = "pygments" -version = "2.11.2" +version = "2.12.0" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.13.7" +version = "2.13.8" description = "python code static checker" category = "dev" optional = false @@ -947,11 +954,11 @@ diagrams = ["railroad-diagrams", "jinja2"] [[package]] name = "pytest" -version = "6.2.5" +version = "7.1.2" description = "pytest: simple powerful testing with Python" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} @@ -961,24 +968,24 @@ iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" py = ">=1.8.2" -toml = "*" +tomli = ">=1.0.0" [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [[package]] name = "pytest-asyncio" -version = "0.16.0" -description = "Pytest support for asyncio." +version = "0.18.3" +description = "Pytest support for asyncio" category = "dev" optional = false -python-versions = ">= 3.6" +python-versions = ">=3.7" [package.dependencies] -pytest = ">=5.4.0" +pytest = ">=6.1.0" [package.extras] -testing = ["coverage", "hypothesis (>=5.7.1)"] +testing = ["coverage (==6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (==0.931)", "pytest-trio (>=0.7.0)"] [[package]] name = "pytest-base-url" @@ -1051,7 +1058,7 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "0.19.2" +version = "0.20.0" description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false @@ -1081,7 +1088,7 @@ six = ">=1.4.0" [[package]] name = "python-slugify" -version = "6.1.1" +version = "6.1.2" description = "A Python slugify application that also handles Unicode" category = "main" optional = false @@ -1150,7 +1157,7 @@ use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] name = "rich" -version = "12.2.0" +version = "12.3.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "dev" optional = false @@ -1166,7 +1173,7 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] [[package]] name = "scalene" -version = "1.5.6" +version = "1.5.8" description = "Scalene: A high-resolution, low-overhead CPU, GPU, and memory profiler for Python" category = "dev" optional = false @@ -1192,7 +1199,7 @@ starkbank-ecdsa = ">=2.0.1" [[package]] name = "shapely" -version = "1.8.1.post1" +version = "1.8.2" description = "Geometric objects, predicates, and operations" category = "main" optional = false @@ -1240,7 +1247,7 @@ python-versions = "*" [[package]] name = "sqlalchemy" -version = "1.4.35" +version = "1.4.36" description = "Database Abstraction Library" category = "main" optional = false @@ -1304,7 +1311,7 @@ python-versions = "*" [[package]] name = "starlette" -version = "0.16.0" +version = "0.18.0" description = "The little ASGI library that shines." category = "main" optional = false @@ -1312,9 +1319,10 @@ python-versions = ">=3.6" [package.dependencies] anyio = ">=3.0.0,<4" +typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] +full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "text-unidecode" @@ -1344,7 +1352,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" @@ -1391,11 +1399,11 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "uvicorn" -version = "0.16.0" +version = "0.17.6" description = "The lightning-fast ASGI server." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] asgiref = ">=3.4.0" @@ -1403,7 +1411,7 @@ click = ">=7.0" h11 = ">=0.8" [package.extras] -standard = ["httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "websockets (>=9.1)", "websockets (>=10.0)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] +standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] [[package]] name = "virtualenv" @@ -1425,11 +1433,14 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", [[package]] name = "watchgod" -version = "0.7" +version = "0.8.2" description = "Simple, modern file watching and code reload in python." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" + +[package.dependencies] +anyio = ">=3.0.0,<4" [[package]] name = "websockets" @@ -1452,7 +1463,7 @@ dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] [[package]] name = "wrapt" -version = "1.14.0" +version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." category = "dev" optional = false @@ -1506,7 +1517,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "cfa167af9fd7c23f869f4d3a1e751f3896344d907d85ad28c32dc1655f0534f9" +content-hash = "e54204305fbaa04f3ec07cac21c190afad20cabf9cc23266ed3372bc84baef2e" [metadata.files] aiocontextvars = [ @@ -1600,12 +1611,12 @@ anyio = [ {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, ] asgiref = [ - {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, - {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, + {file = "asgiref-3.5.1-py3-none-any.whl", hash = "sha256:45a429524fba18aba9d512498b19d220c4d628e75b40cf5c627524dbaebc5cc1"}, + {file = "asgiref-3.5.1.tar.gz", hash = "sha256:fddeea3c53fa99d0cdb613c3941cc6e52d822491fc2753fba25768fb5bf4e865"}, ] astroid = [ - {file = "astroid-2.11.3-py3-none-any.whl", hash = "sha256:f1af57483cd17e963b2eddce8361e00fc593d1520fe19948488e94ff6476bd71"}, - {file = "astroid-2.11.3.tar.gz", hash = "sha256:4e5ba10571e197785e312966ea5efb2f5783176d4c1a73fa922d474ae2be59f7"}, + {file = "astroid-2.11.4-py3-none-any.whl", hash = "sha256:da0632b7c046d8361dfe1b1abb2e085a38624961fabe2997565a9c06c1be9d9a"}, + {file = "astroid-2.11.4.tar.gz", hash = "sha256:561dc6015eecce7e696ff7e3b40434bc56831afeff783f0ea853e19c4f635c06"}, ] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, @@ -1620,20 +1631,21 @@ attrs = [ {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] bcrypt = [ - {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b589229207630484aefe5899122fb938a5b017b0f4349f769b8c13e78d99a8fd"}, - {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"}, - {file = "bcrypt-3.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a0584a92329210fcd75eb8a3250c5a941633f8bfaf2a18f81009b097732839b7"}, - {file = "bcrypt-3.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:56e5da069a76470679f312a7d3d23deb3ac4519991a0361abc11da837087b61d"}, - {file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"}, - {file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"}, - {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, + {file = "bcrypt-3.2.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:7180d98a96f00b1050e93f5b0f556e658605dd9f524d0b0e68ae7944673f525e"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:61bae49580dce88095d669226d5076d0b9d927754cedbdf76c6c9f5099ad6f26"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88273d806ab3a50d06bc6a2fc7c87d737dd669b76ad955f449c43095389bc8fb"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6d2cb9d969bfca5bc08e45864137276e4c3d3d7de2b162171def3d188bf9d34a"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b02d6bfc6336d1094276f3f588aa1225a598e27f8e3388f4db9948cb707b521"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c46100e315c3a5b90fdc53e429c006c5f962529bc27e1dfd656292c20ccc40"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7d9ba2e41e330d2af4af6b1b6ec9e6128e91343d0b4afb9282e54e5508f31baa"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cd43303d6b8a165c29ec6756afd169faba9396a9472cdff753fe9f19b96ce2fa"}, + {file = "bcrypt-3.2.2-cp36-abi3-win32.whl", hash = "sha256:4e029cef560967fb0cf4a802bcf4d562d3d6b4b1bf81de5ec1abbe0f1adb027e"}, + {file = "bcrypt-3.2.2-cp36-abi3-win_amd64.whl", hash = "sha256:7ff2069240c6bbe49109fe84ca80508773a904f5a8cb960e02a977f7f519b129"}, + {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, ] beanie = [ - {file = "beanie-1.10.8-py3-none-any.whl", hash = "sha256:1461b0dc1c3e6d508a244bb89cf0963e26350e13acd10823b6a0e686cc0a7901"}, - {file = "beanie-1.10.8.tar.gz", hash = "sha256:92c8209b025a275e65840d8384249db0bb2dff05dfdef699cf0bf45d7008a908"}, + {file = "beanie-1.11.0-py3-none-any.whl", hash = "sha256:60102e1803bf87f6a96ce06601f6de7770f9825c37b7144717d10254f52cc4e7"}, + {file = "beanie-1.11.0.tar.gz", hash = "sha256:634a1d0d49bc567340481a13703e8a305cd3f28a475185e1447073e1d42122c3"}, ] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, @@ -1700,8 +1712,8 @@ charset-normalizer = [ {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, - {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] cloudpickle = [ {file = "cloudpickle-2.0.0-py3-none-any.whl", hash = "sha256:6b2df9741d06f43839a3275c4e6632f7df6487a1f181f5f46a052d3c917c3d11"}, @@ -1762,26 +1774,28 @@ coverage = [ {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, ] cryptography = [ - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, - {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, - {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, - {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3c81599befb4d4f3d7648ed3217e00d21a9341a9a688ecdd615ff72ffbed7336"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2bd1096476aaac820426239ab534b636c77d71af66c547b9ddcd76eb9c79e004"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:31fe38d14d2e5f787e0aecef831457da6cec68e0bb09a35835b0b44ae8b988fe"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:093cb351031656d3ee2f4fa1be579a8c69c754cf874206be1d4cf3b542042804"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59b281eab51e1b6b6afa525af2bd93c16d49358404f814fe2c2410058623928c"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:0cc20f655157d4cfc7bada909dc5cc228211b075ba8407c46467f63597c78178"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f8ec91983e638a9bcd75b39f1396e5c0dc2330cbd9ce4accefe68717e6779e0a"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:46f4c544f6557a2fefa7ac8ac7d1b17bf9b647bd20b16decc8fbcab7117fbc15"}, + {file = "cryptography-37.0.2-cp36-abi3-win32.whl", hash = "sha256:731c8abd27693323b348518ed0e0705713a36d79fdbd969ad968fbef0979a7e0"}, + {file = "cryptography-37.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:471e0d70201c069f74c837983189949aa0d24bb2d751b57e26e3761f2f782b8d"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a68254dd88021f24a68b613d8c51d5c5e74d735878b9e32cc0adf19d1f10aaf9"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:a7d5137e556cc0ea418dca6186deabe9129cee318618eb1ffecbd35bee55ddc1"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aeaba7b5e756ea52c8861c133c596afe93dd716cbcacae23b80bc238202dc023"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95e590dd70642eb2079d280420a888190aa040ad20f19ec8c6e097e38aa29e06"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1b9362d34363f2c71b7853f6251219298124aa4cc2075ae2932e64c91a3e2717"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e53258e69874a306fcecb88b7534d61820db8a98655662a3dd2ec7f1afd9132f"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:1f3bfbd611db5cb58ca82f3deb35e83af34bb8cf06043fa61500157d50a70982"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:419c57d7b63f5ec38b1199a9521d77d7d1754eb97827bbb773162073ccd8c8d4"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:dc26bb134452081859aa21d4990474ddb7e863aa39e60d1592800a8865a702de"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452"}, + {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, ] dataclasses-json = [ {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, @@ -1800,8 +1814,8 @@ dpath = [ {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, ] fastapi = [ - {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, - {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, + {file = "fastapi-0.76.0-py3-none-any.whl", hash = "sha256:1e05c868651e3935bd9b290c61a3661a54e37471d3a0700bc5e4380f9ed935ae"}, + {file = "fastapi-0.76.0.tar.gz", hash = "sha256:a5f99f6e827c7108a8efaf1d7f19d6cf2d735ad984f5e44d33ccec6ee88a7da1"}, ] filelock = [ {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, @@ -1933,12 +1947,12 @@ h11 = [ {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hypothesis = [ - {file = "hypothesis-6.45.0-py3-none-any.whl", hash = "sha256:92b7a7d6f0829d48bc1f87c496dfa601eb9d815549bb12daa601184807733c5b"}, - {file = "hypothesis-6.45.0.tar.gz", hash = "sha256:9d17ebf4137e15f6db24793dad7268b8b5afcfc78b770f307c94872f1d96850a"}, + {file = "hypothesis-6.46.2-py3-none-any.whl", hash = "sha256:37ca37f61939d0a92c18b5e17ab8088dccc5fc077c913d6619bbe1d233dfca1e"}, + {file = "hypothesis-6.46.2.tar.gz", hash = "sha256:c671b3801527f3a8189314d9385418a67d4c7ab1b3330a3ff8b267d0d4599b3d"}, ] identify = [ - {file = "identify-2.4.12-py2.py3-none-any.whl", hash = "sha256:5f06b14366bd1facb88b00540a1de05b69b310cbc2654db3c7e07fa3a4339323"}, - {file = "identify-2.4.12.tar.gz", hash = "sha256:3f3244a559290e7d3deb9e9adc7b33594c1bc85a9dd82e0f1be519bf12a1ec17"}, + {file = "identify-2.5.0-py2.py3-none-any.whl", hash = "sha256:3acfe15a96e4272b4ec5662ee3e231ceba976ef63fd9980ed2ce9cc415df393f"}, + {file = "identify-2.5.0.tar.gz", hash = "sha256:c83af514ea50bf2be2c4a3f2fb349442b59dc87284558ae9ff54191bff3541d2"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -2054,8 +2068,8 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] loguru = [ - {file = "loguru-0.5.3-py3-none-any.whl", hash = "sha256:f8087ac396b5ee5f67c963b495d615ebbceac2796379599820e324419d53667c"}, - {file = "loguru-0.5.3.tar.gz", hash = "sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"}, + {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, + {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, ] lorem-text = [ {file = "lorem_text-2.1-py2.py3-none-any.whl", hash = "sha256:b512779addd08dcc221460ce428f7911b198f66c5763410f3de6d788eb62ceb3"}, @@ -2124,8 +2138,8 @@ mccabe = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] mongoengine = [ - {file = "mongoengine-0.23.1-py3-none-any.whl", hash = "sha256:3d1c8b9f5d43144bd726a3f01e58d2831c6fb112960a4a60b3a26fa85e026ab3"}, - {file = "mongoengine-0.23.1.tar.gz", hash = "sha256:de275e70cd58891dc46eef43369c522ce450dccb6d6f1979cbc9b93e6bdaf6cb"}, + {file = "mongoengine-0.24.1-py3-none-any.whl", hash = "sha256:68878b65bcb3751debcba4342180a180161cdb5f46525027e622ad081dd44fac"}, + {file = "mongoengine-0.24.1.tar.gz", hash = "sha256:01baac85f408f5eefb6195c0afeae631e7fc6fab5cb221a7b46646f94227d6da"}, ] motor = [ {file = "motor-2.5.1-py3-none-any.whl", hash = "sha256:961fdceacaae2c7236c939166f66415be81be8bbb762da528386738de3a0f509"}, @@ -2196,26 +2210,29 @@ multidict = [ {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] mypy = [ - {file = "mypy-0.930-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:221cc94dc6a801ccc2be7c0c9fd791c5e08d1fa2c5e1c12dec4eab15b2469871"}, - {file = "mypy-0.930-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db3a87376a1380f396d465bed462e76ea89f838f4c5e967d68ff6ee34b785c31"}, - {file = "mypy-0.930-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1d2296f35aae9802eeb1327058b550371ee382d71374b3e7d2804035ef0b830b"}, - {file = "mypy-0.930-cp310-cp310-win_amd64.whl", hash = "sha256:959319b9a3cafc33a8185f440a433ba520239c72e733bf91f9efd67b0a8e9b30"}, - {file = "mypy-0.930-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:45a4dc21c789cfd09b8ccafe114d6de66f0b341ad761338de717192f19397a8c"}, - {file = "mypy-0.930-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1e689e92cdebd87607a041585f1dc7339aa2e8a9f9bad9ba7e6ece619431b20c"}, - {file = "mypy-0.930-cp36-cp36m-win_amd64.whl", hash = "sha256:ed4e0ea066bb12f56b2812a15ff223c57c0a44eca817ceb96b214bb055c7051f"}, - {file = "mypy-0.930-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a9d8dffefba634b27d650e0de2564379a1a367e2e08d6617d8f89261a3bf63b2"}, - {file = "mypy-0.930-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b419e9721260161e70d054a15abbd50603c16f159860cfd0daeab647d828fc29"}, - {file = "mypy-0.930-cp37-cp37m-win_amd64.whl", hash = "sha256:601f46593f627f8a9b944f74fd387c9b5f4266b39abad77471947069c2fc7651"}, - {file = "mypy-0.930-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ea7199780c1d7940b82dbc0a4e37722b4e3851264dbba81e01abecc9052d8a7"}, - {file = "mypy-0.930-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:70b197dd8c78fc5d2daf84bd093e8466a2b2e007eedaa85e792e513a820adbf7"}, - {file = "mypy-0.930-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5feb56f8bb280468fe5fc8e6f56f48f99aa0df9eed3c507a11505ee4657b5380"}, - {file = "mypy-0.930-cp38-cp38-win_amd64.whl", hash = "sha256:2e9c5409e9cb81049bb03fa1009b573dea87976713e3898561567a86c4eaee01"}, - {file = "mypy-0.930-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:554873e45c1ca20f31ddf873deb67fa5d2e87b76b97db50669f0468ccded8fae"}, - {file = "mypy-0.930-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0feb82e9fa849affca7edd24713dbe809dce780ced9f3feca5ed3d80e40b777f"}, - {file = "mypy-0.930-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bc1a0607ea03c30225347334af66b0af12eefba018a89a88c209e02b7065ea95"}, - {file = "mypy-0.930-cp39-cp39-win_amd64.whl", hash = "sha256:f9f665d69034b1fcfdbcd4197480d26298bbfb5d2dfe206245b6498addb34999"}, - {file = "mypy-0.930-py3-none-any.whl", hash = "sha256:bf4a44e03040206f7c058d1f5ba02ef2d1820720c88bc4285c7d9a4269f54173"}, - {file = "mypy-0.930.tar.gz", hash = "sha256:51426262ae4714cc7dd5439814676e0992b55bcc0f6514eccb4cf8e0678962c2"}, + {file = "mypy-0.950-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cf9c261958a769a3bd38c3e133801ebcd284ffb734ea12d01457cb09eacf7d7b"}, + {file = "mypy-0.950-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b5bd0ffb11b4aba2bb6d31b8643902c48f990cc92fda4e21afac658044f0c0"}, + {file = "mypy-0.950-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e7647df0f8fc947388e6251d728189cfadb3b1e558407f93254e35abc026e22"}, + {file = "mypy-0.950-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eaff8156016487c1af5ffa5304c3e3fd183edcb412f3e9c72db349faf3f6e0eb"}, + {file = "mypy-0.950-cp310-cp310-win_amd64.whl", hash = "sha256:563514c7dc504698fb66bb1cf897657a173a496406f1866afae73ab5b3cdb334"}, + {file = "mypy-0.950-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dd4d670eee9610bf61c25c940e9ade2d0ed05eb44227275cce88701fee014b1f"}, + {file = "mypy-0.950-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca75ecf2783395ca3016a5e455cb322ba26b6d33b4b413fcdedfc632e67941dc"}, + {file = "mypy-0.950-cp36-cp36m-win_amd64.whl", hash = "sha256:6003de687c13196e8a1243a5e4bcce617d79b88f83ee6625437e335d89dfebe2"}, + {file = "mypy-0.950-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4c653e4846f287051599ed8f4b3c044b80e540e88feec76b11044ddc5612ffed"}, + {file = "mypy-0.950-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e19736af56947addedce4674c0971e5dceef1b5ec7d667fe86bcd2b07f8f9075"}, + {file = "mypy-0.950-cp37-cp37m-win_amd64.whl", hash = "sha256:ef7beb2a3582eb7a9f37beaf38a28acfd801988cde688760aea9e6cc4832b10b"}, + {file = "mypy-0.950-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0112752a6ff07230f9ec2f71b0d3d4e088a910fdce454fdb6553e83ed0eced7d"}, + {file = "mypy-0.950-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee0a36edd332ed2c5208565ae6e3a7afc0eabb53f5327e281f2ef03a6bc7687a"}, + {file = "mypy-0.950-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77423570c04aca807508a492037abbd72b12a1fb25a385847d191cd50b2c9605"}, + {file = "mypy-0.950-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ce6a09042b6da16d773d2110e44f169683d8cc8687e79ec6d1181a72cb028d2"}, + {file = "mypy-0.950-cp38-cp38-win_amd64.whl", hash = "sha256:5b231afd6a6e951381b9ef09a1223b1feabe13625388db48a8690f8daa9b71ff"}, + {file = "mypy-0.950-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0384d9f3af49837baa92f559d3fa673e6d2652a16550a9ee07fc08c736f5e6f8"}, + {file = "mypy-0.950-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1fdeb0a0f64f2a874a4c1f5271f06e40e1e9779bf55f9567f149466fc7a55038"}, + {file = "mypy-0.950-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:61504b9a5ae166ba5ecfed9e93357fd51aa693d3d434b582a925338a2ff57fd2"}, + {file = "mypy-0.950-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a952b8bc0ae278fc6316e6384f67bb9a396eb30aced6ad034d3a76120ebcc519"}, + {file = "mypy-0.950-cp39-cp39-win_amd64.whl", hash = "sha256:eaea21d150fb26d7b4856766e7addcf929119dd19fc832b22e71d942835201ef"}, + {file = "mypy-0.950-py3-none-any.whl", hash = "sha256:a4d9898f46446bfb6405383b57b96737dcfd0a7f25b748e78ef3e8c576bba3cb"}, + {file = "mypy-0.950.tar.gz", hash = "sha256:1b333cfbca1762ff15808a0ef4f71b5d3eed8528b23ea1c3fb50543c867d68de"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, @@ -2252,8 +2269,8 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] paramiko = [ - {file = "paramiko-2.10.3-py2.py3-none-any.whl", hash = "sha256:ac6593479f2b47a9422eca076b22cff9f795495e6733a64723efc75dd8c92101"}, - {file = "paramiko-2.10.3.tar.gz", hash = "sha256:ddb1977853aef82804b35d72a0e597b244fa326c404c350bd00c5b01dbfee71a"}, + {file = "paramiko-2.10.4-py2.py3-none-any.whl", hash = "sha256:3c9ed6084f4b671ab66dc3c729092d32d96c3258f1426071301cb33654b09027"}, + {file = "paramiko-2.10.4.tar.gz", hash = "sha256:3d2e650b6812ce6d160abff701d6ef4434ec97934b13e95cf1ad3da70ffb5c58"}, ] peewee = [ {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, @@ -2282,47 +2299,44 @@ pendulum = [ {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, ] pillow = [ - {file = "Pillow-8.4.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d"}, - {file = "Pillow-8.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f"}, - {file = "Pillow-8.4.0-cp310-cp310-win32.whl", hash = "sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a"}, - {file = "Pillow-8.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39"}, - {file = "Pillow-8.4.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645"}, - {file = "Pillow-8.4.0-cp36-cp36m-win32.whl", hash = "sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9"}, - {file = "Pillow-8.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff"}, - {file = "Pillow-8.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488"}, - {file = "Pillow-8.4.0-cp37-cp37m-win32.whl", hash = "sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b"}, - {file = "Pillow-8.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b"}, - {file = "Pillow-8.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49"}, - {file = "Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df"}, - {file = "Pillow-8.4.0-cp38-cp38-win32.whl", hash = "sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09"}, - {file = "Pillow-8.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76"}, - {file = "Pillow-8.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a"}, - {file = "Pillow-8.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed"}, - {file = "Pillow-8.4.0-cp39-cp39-win32.whl", hash = "sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02"}, - {file = "Pillow-8.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc"}, - {file = "Pillow-8.4.0.tar.gz", hash = "sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed"}, + {file = "Pillow-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea"}, + {file = "Pillow-9.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e"}, + {file = "Pillow-9.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3"}, + {file = "Pillow-9.1.0-cp310-cp310-win32.whl", hash = "sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160"}, + {file = "Pillow-9.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033"}, + {file = "Pillow-9.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2"}, + {file = "Pillow-9.1.0-cp37-cp37m-win32.whl", hash = "sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244"}, + {file = "Pillow-9.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef"}, + {file = "Pillow-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512"}, + {file = "Pillow-9.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e"}, + {file = "Pillow-9.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5"}, + {file = "Pillow-9.1.0-cp38-cp38-win32.whl", hash = "sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a"}, + {file = "Pillow-9.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34"}, + {file = "Pillow-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"}, + {file = "Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331"}, + {file = "Pillow-9.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8"}, + {file = "Pillow-9.1.0-cp39-cp39-win32.whl", hash = "sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58"}, + {file = "Pillow-9.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458"}, + {file = "Pillow-9.1.0.tar.gz", hash = "sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97"}, ] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, @@ -2342,8 +2356,8 @@ pluggy = [ {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] pre-commit = [ - {file = "pre_commit-2.18.1-py2.py3-none-any.whl", hash = "sha256:02226e69564ebca1a070bd1f046af866aa1c318dbc430027c50ab832ed2b73f2"}, - {file = "pre_commit-2.18.1.tar.gz", hash = "sha256:5d445ee1fa8738d506881c5d84f83c62bb5be6b2838e32207433647e8e5ebe10"}, + {file = "pre_commit-2.19.0-py2.py3-none-any.whl", hash = "sha256:10c62741aa5704faea2ad69cb550ca78082efe5697d6f04e5710c3c229afdd10"}, + {file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"}, ] psutil = [ {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, @@ -2432,12 +2446,12 @@ pyee = [ {file = "pyee-8.1.0.tar.gz", hash = "sha256:92dacc5bd2bdb8f95aa8dd2585d47ca1c4840e2adb95ccf90034d64f725bfd31"}, ] pygments = [ - {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, - {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, + {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, + {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.13.7-py3-none-any.whl", hash = "sha256:13ddbbd8872c804574149e81197c28877eba75224ba6b76cd8652fc31df55c1c"}, - {file = "pylint-2.13.7.tar.gz", hash = "sha256:911d3a97c808f7554643bcc5416028cfdc42eae34ed129b150741888c688d5d5"}, + {file = "pylint-2.13.8-py3-none-any.whl", hash = "sha256:f87e863a0b08f64b5230e7e779bcb75276346995737b2c0dc2793070487b1ff6"}, + {file = "pylint-2.13.8.tar.gz", hash = "sha256:ced8968c3b699df0615e2a709554dec3ddac2f5cd06efadb69554a69eeca364a"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -2569,12 +2583,13 @@ pyparsing = [ {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, ] pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, ] pytest-asyncio = [ - {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, - {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, + {file = "pytest-asyncio-0.18.3.tar.gz", hash = "sha256:7659bdb0a9eb9c6e3ef992eef11a2b3e69697800ad02fb06374a210d85b29f91"}, + {file = "pytest_asyncio-0.18.3-1-py3-none-any.whl", hash = "sha256:16cf40bdf2b4fb7fc8e4b82bd05ce3fbcd454cbf7b92afc445fe299dabb88213"}, + {file = "pytest_asyncio-0.18.3-py3-none-any.whl", hash = "sha256:8fafa6c52161addfd41ee7ab35f11836c5a16ec208f93ee388f752bea3493a84"}, ] pytest-base-url = [ {file = "pytest-base-url-2.0.0.tar.gz", hash = "sha256:e1e88a4fd221941572ccdcf3bf6c051392d2f8b6cef3e0bc7da95abec4b5346e"}, @@ -2597,8 +2612,8 @@ python-dateutil = [ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] python-dotenv = [ - {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"}, - {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, + {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, + {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, ] python-http-client = [ {file = "python_http_client-3.3.7-py3-none-any.whl", hash = "sha256:ad371d2bbedc6ea15c26179c6222a78bc9308d272435ddf1d5c84f068f249a36"}, @@ -2608,8 +2623,8 @@ python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] python-slugify = [ - {file = "python-slugify-6.1.1.tar.gz", hash = "sha256:00003397f4e31414e922ce567b3a4da28cf1436a53d332c9aeeb51c7d8c469fd"}, - {file = "python_slugify-6.1.1-py2.py3-none-any.whl", hash = "sha256:8c0016b2d74503eb64761821612d58fcfc729493634b1eb0575d8f5b4aa1fbcf"}, + {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"}, + {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"}, ] pytz = [ {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, @@ -2663,54 +2678,62 @@ requests = [ {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] rich = [ - {file = "rich-12.2.0-py3-none-any.whl", hash = "sha256:c50f3d253bc6a9bb9c79d61a26d510d74abdf1b16881260fab5edfc3edfb082f"}, - {file = "rich-12.2.0.tar.gz", hash = "sha256:ea74bc9dad9589d8eea3e3fd0b136d8bf6e428888955f215824c2894f0da8b47"}, + {file = "rich-12.3.0-py3-none-any.whl", hash = "sha256:0eb63013630c6ee1237e0e395d51cb23513de6b5531235e33889e8842bdf3a6f"}, + {file = "rich-12.3.0.tar.gz", hash = "sha256:7e8700cda776337036a712ff0495b04052fb5f957c7dfb8df997f88350044b64"}, ] scalene = [ - {file = "scalene-1.5.6-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:50d5ead18ee60f46adca3dc9a1cfb01fbc6fc158fc4edc11608339a6ccf7a1bd"}, - {file = "scalene-1.5.6-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:42b1484eaa3bf6be92c635f38521761a24b6e2a8a1426a39394b67ef6d63a978"}, - {file = "scalene-1.5.6-cp310-cp310-win_amd64.whl", hash = "sha256:b1113e509d6c340e737549aee8bbe42e84d3f8c8d940b84d7a9b1080b04877ea"}, - {file = "scalene-1.5.6-cp37-cp37m-macosx_10_14_universal2.whl", hash = "sha256:c3d1b9501119b2040033189025ceff9f99018c507bc25332c1a1897912a5b16f"}, - {file = "scalene-1.5.6-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:d8537a40b6010b8953970344daa87ea6f4f0fb7f3cac2bde2d0048ddf30c1bcb"}, - {file = "scalene-1.5.6-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:af667e3a6e15afa8a4fb729cf254bb68f2891400998d9618cc80eedc02af4759"}, - {file = "scalene-1.5.6-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:f3d13e4a0e018ea08a16233654ad5d1bf5f3f88483af5751f2ec22afbb12f445"}, - {file = "scalene-1.5.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb9823860e1f05dacef4e39a0d3ce291bbddcdd6d3d6920eb5918b82b787df63"}, - {file = "scalene-1.5.6-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:f9e343883b025f7b6378edf0c710d26ca4935a890c2bfb59c7c44061080470b1"}, - {file = "scalene-1.5.6-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:cc5a7c1f1f5ddc480731d2eb75460b7e782281c13301601e204872ffe84ff37f"}, - {file = "scalene-1.5.6-cp39-cp39-win_amd64.whl", hash = "sha256:438c6dda93a3dcb3382bba0567d96bf3f364b3a13b360673262955ce8cc5e753"}, - {file = "scalene-1.5.6.tar.gz", hash = "sha256:7741a57afc18cd3402db18e0cb7681a4a4943f292d437ba9ee044684f1163d08"}, + {file = "scalene-1.5.8-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:87db62d0639386e7b751021a5b63b3143ac11d31dbe130830ce27a744e54dadc"}, + {file = "scalene-1.5.8-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:82ad12cc7859b1e87eff1d840fbc7eb7b566b5285ce7f7c7b10b466492947dc0"}, + {file = "scalene-1.5.8-cp310-cp310-win_amd64.whl", hash = "sha256:73be9cd295d62f3e7b7da17b78d2080fbb376fbc74e1399e2f02a33421fba6d7"}, + {file = "scalene-1.5.8-cp37-cp37m-macosx_10_14_universal2.whl", hash = "sha256:9b9048db3500e5606d026c74d7b834f6f67a58d718bf494897f75321c6bcbe49"}, + {file = "scalene-1.5.8-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:532c4afc3339a1da156a322d17e5059fa02321ea54bff2ebc1fe86a3946dbcf1"}, + {file = "scalene-1.5.8-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:c102a802f0d9a0810efab1ad73ce1bae4acb4004ae94cb6220cb88073e39b22f"}, + {file = "scalene-1.5.8-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:e9bd38973d3269357c73b052454b7e803f152eb92e5f100681aaf0bf9f69ebf1"}, + {file = "scalene-1.5.8-cp38-cp38-win_amd64.whl", hash = "sha256:a72d4d239e5efd847b57075e25e3c3c727b120a28cdb84ff47038273e8d5eab2"}, + {file = "scalene-1.5.8-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:a46a41c750003c6c3f5c94e7ac1d276a35d30103f3b669d3b08660f5cd217041"}, + {file = "scalene-1.5.8-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:b6975f289311c19c27adf20f91be3f47904c93886f9ea9be308028f1d2ddca09"}, + {file = "scalene-1.5.8-cp39-cp39-win_amd64.whl", hash = "sha256:26a25311d9786cbf31fc3f17b2a33a77f9dce62089dcd8fd420bb0e268971d2a"}, + {file = "scalene-1.5.8.tar.gz", hash = "sha256:1f961241702c87ce6749befe53873ffe2a215c4c264b72b59128e50fa1a8fc87"}, ] sendgrid = [ {file = "sendgrid-6.9.7-py3-none-any.whl", hash = "sha256:ba8d3d39e1f392b9434365d53983b2fc6a458ae0496d2d9e103c15e1743ab66b"}, {file = "sendgrid-6.9.7.tar.gz", hash = "sha256:fa30411c627690fecd0ef6b1d4e1783f2d0272aa14b5fffb133ebd1e31114f16"}, ] shapely = [ - {file = "Shapely-1.8.1.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0ca96a3314b7a38a3bb385531469de1fcf2b2c2979ec2aa4f37b4c70632cf1ad"}, - {file = "Shapely-1.8.1.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:493902923fdd135316161a4ece5294ba3ce81accaa54540d2af3b93f7231143a"}, - {file = "Shapely-1.8.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:b82fc74d5efb11a71283c4ed69b4e036997cc70db4b73c646207ddf0476ade44"}, - {file = "Shapely-1.8.1.post1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:89bc5f3abc1ccbc7682c2e1664153c4f8f125fa9c24bff4abca48685739d5636"}, - {file = "Shapely-1.8.1.post1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:44cb895b1710f7559c28d69dfa08cafe4f58cd4b7a87091a55bdf6711ad9ad66"}, - {file = "Shapely-1.8.1.post1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:437fff3b6274be26ffa3e450de711ee01e436324b5a405952add2146227e3eb5"}, - {file = "Shapely-1.8.1.post1-cp36-cp36m-win32.whl", hash = "sha256:dc0f46212f84c57d13189fc33cf61e13eee292704d7652e931e4b51c54b0c73c"}, - {file = "Shapely-1.8.1.post1-cp36-cp36m-win_amd64.whl", hash = "sha256:9248aad099ecf228fbdd877b0c668823dd83c48798cf04d49a1be75167e3a7ce"}, - {file = "Shapely-1.8.1.post1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bab5ff7c576588acccd665ecce2a0fe7b47d4ce0398f2d5c1e5b2e27d09398d2"}, - {file = "Shapely-1.8.1.post1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2381ce0aff67d569eb509bcc051264aa5fbdc1fdd54f4c09963d0e09f16a8f1b"}, - {file = "Shapely-1.8.1.post1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b4d35e72022b2dbf152d476b0362596011c674ff68be9fc8f2e68e71d86502ca"}, - {file = "Shapely-1.8.1.post1-cp37-cp37m-win32.whl", hash = "sha256:5a420e7112b55a1587412a5b03ebf59e302ddd354da68516d3721718f6b8a7c5"}, - {file = "Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:c4c366e18edf91196a399f8f0f046f93516002e6d8af0b57c23e7c7d91944b16"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2020fda37c708d44a613c020cea09e81e476f96866f348afc2601e66c0e71db1"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69d5352fb977655c85d2f40a05ae24fc5053cccee77d0a8b1f773e54804e723e"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83f3c8191d30ae0e3dd557434c48ca591d75342d5a3f42fc5148ec42796be624"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e792635e92c9aacd1452a589a4fa2970114b6a9b1165e09655481f6e58970f5"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-win32.whl", hash = "sha256:8cf7331f61780506976fe2175e069d898e1b04ace73be21aad55c3ee92e58e3a"}, - {file = "Shapely-1.8.1.post1-cp38-cp38-win_amd64.whl", hash = "sha256:f109064bdb0753a6bac6238538cfeeb4a09739e2d556036b343b2eabeb9520b2"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aea1e87450adffba3d04ccbaa790df719bb7aa23b05ac797ad16be236a5d0db8"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3a3602ba2e7715ddd5d4114173dec83d3181bfb2497e8589676c284aa739fd67"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:679789d774cfe09ca05118cab78c0a6a42985b3ed23bc93606272a4509b4df28"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:363df36370f28fdc7789857929f6ff27e659f64087b4c89f7a47ed43bd3bfe4d"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-win32.whl", hash = "sha256:bc6063875182515d3888180cc4cbdbaa6443e4a4386c4bb25499e9875b75dcac"}, - {file = "Shapely-1.8.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:54aeb2a57978ce731fd52289d0e1deee7c232d41aed53091f38776378f644184"}, - {file = "Shapely-1.8.1.post1.tar.gz", hash = "sha256:93ff06ff05fbe2be843b93c7b1ad8292e56e665ba01b4708f75ae8a757972e9f"}, + {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c9e3400b716c51ba43eea1678c28272580114e009b6c78cdd00c44df3e325fa"}, + {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce0b5c5f7acbccf98b3460eecaa40e9b18272b2a734f74fcddf1d7696e047e95"}, + {file = "Shapely-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a40bf497b57a6625b83996aed10ce2233bca0e5471b8af771b186d681433ac5"}, + {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6bdc7728f1e5df430d8c588661f79f1eed4a2728c8b689e12707cfec217f68f8"}, + {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a60861b5ca2c488ebcdc706eca94d325c26d1567921c74acc83df5e6913590c7"}, + {file = "Shapely-1.8.2-cp310-cp310-win32.whl", hash = "sha256:840be3f27a1152851c54b968f2e12d718c9f13b7acd51c482e58a70f60f29e31"}, + {file = "Shapely-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:c60f3758212ec480675b820b13035dda8af8f7cc560d2cc67999b2717fb8faef"}, + {file = "Shapely-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:56413f7d32c70b63f239eb0865b24c0c61029e38757de456cc4ab3c416559a0b"}, + {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:256bdf8080bb7bb504d47b2c76919ecebab9708cc1b26266b3ec32b42448f642"}, + {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0a0d7752b145343838bd36ed09382d85f5befe426832d7384c5b051c147acbd"}, + {file = "Shapely-1.8.2-cp36-cp36m-win32.whl", hash = "sha256:62056e64b12b6d483d79f8e34bf058d2fe734d51c9227c1713705399434eff3b"}, + {file = "Shapely-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e3ed52a081da58eb4a885c157c594876633dbd4eb283f13ba5bf39c82322d76"}, + {file = "Shapely-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c8eda45085ccdd7f9805ea4a93fdd5eb0b6039a61d5f0cefb960487e6dc17a1"}, + {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:beee3949ddf381735049cfa6532fb234d5d20a5be910c4f2fb7c7295fd7960e3"}, + {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e07b0bd2a0e61a8afd4d1c1bd23f3550b711f01274ffb53de99358fd781eefd8"}, + {file = "Shapely-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:78966332a89813b237de357a03f612fd451a871fe6e26c12b6b71645fe8eee39"}, + {file = "Shapely-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8fe641f1f61b3d43dd61b5a85d2ef023e6e19bf8f204a5160a1cb1ec645cbc09"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cec89a5617c0137f4678282e983c3d63bf838fb00cdf318cc555b4d8409f7130"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68c8e18dc9dc8a198c3addc8c9596f64137101f566f04b96ecfca0b214cb8b12"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f12695662c3ad1e6031b3de98f191963d0f09de6d1a4988acd907405644032ba"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:15a856fbb588ad5d042784e00918c662902776452008c771ecba2ff615cd197a"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d74de394684d66e25e780b0359fda85be7766af85940fa2dfad728b1a815c71f"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f3fac625690f01f35af665649e993f15f924e740b5c0ac0376900655815521"}, + {file = "Shapely-1.8.2-cp38-cp38-win32.whl", hash = "sha256:1d95842cc6bbbeab673061b63e70b07be9a375c15a60f4098f8fbd29f43af1b4"}, + {file = "Shapely-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:a58e1f362f2091743e5e13212f5d5d16251a4bb63dd0ed587c652d3be9620d3a"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5254240eefc44139ab0d128faf671635d8bdd9c23955ee063d4d6b8f20073ae0"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75042e8039c79dd01f102bb288beace9dc2f49fc44a2dea875f9b697aa8cd30d"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c0fd457ce477b1dced507a72f1e2084c9191bfcb8a1e09886990ebd02acf024"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6fcb28836ae93809de1dde73c03c9c24bab0ba2b2bf419ddb2aeb72c96d110e9"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44d2832c1b706bf43101fda92831a083467cc4b4923a7ed17319ab599c1025d8"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:137f1369630408024a62ff79a437a5657e6c5b76b9cd352dde704b425acdb298"}, + {file = "Shapely-1.8.2-cp39-cp39-win32.whl", hash = "sha256:2e02da2e988e74d61f15c720f9f613fab51942aae2dfeacdcb78eadece00e1f3"}, + {file = "Shapely-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:3423299254deec075e79fb7dc7909d702104e4167149de7f45510c3a6342eeea"}, + {file = "Shapely-1.8.2.tar.gz", hash = "sha256:572af9d5006fd5e3213e37ee548912b0341fb26724d6dc8a4e3950c10197ebb6"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -2729,42 +2752,42 @@ sortedcontainers = [ {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.35-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:093b3109c2747d5dc0fa4314b1caf4c7ca336d5c8c831e3cfbec06a7e861e1e6"}, - {file = "SQLAlchemy-1.4.35-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6fb6b9ed1d0be7fa2c90be8ad2442c14cbf84eb0709dd1afeeff1e511550041"}, - {file = "SQLAlchemy-1.4.35-cp27-cp27m-win32.whl", hash = "sha256:d38a49aa75a5759d0d118e26701d70c70a37b896379115f8386e91b0444bfa70"}, - {file = "SQLAlchemy-1.4.35-cp27-cp27m-win_amd64.whl", hash = "sha256:70e571ae9ee0ff36ed37e2b2765445d54981e4d600eccdf6fe3838bc2538d157"}, - {file = "SQLAlchemy-1.4.35-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:48036698f20080462e981b18d77d574631a3d1fc2c33b416c6df299ec1d10b99"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:4ba2c1f368bcf8551cdaa27eac525022471015633d5bdafbc4297e0511f62f51"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17316100fcd0b6371ac9211351cb976fd0c2e12a859c1a57965e3ef7f3ed2bc"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9837133b89ad017e50a02a3b46419869cf4e9aa02743e911b2a9e25fa6b05403"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4efb70a62cbbbc052c67dc66b5448b0053b509732184af3e7859d05fdf6223c"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-win32.whl", hash = "sha256:1ff9f84b2098ef1b96255a80981ee10f4b5d49b6cfeeccf9632c2078cd86052e"}, - {file = "SQLAlchemy-1.4.35-cp310-cp310-win_amd64.whl", hash = "sha256:48f0eb5bcc87a9b2a95b345ed18d6400daaa86ca414f6840961ed85c342af8f4"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da25e75ba9f3fabc271673b6b413ca234994e6d3453424bea36bb5549c5bbaec"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeea6ace30603ca9a8869853bb4a04c7446856d7789e36694cd887967b7621f6"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a5dbdbb39c1b100df4d182c78949158073ca46ba2850c64fe02ffb1eb5b70903"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfd8e4c64c30a5219032e64404d468c425bdbc13b397da906fc9bee6591fc0dd"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-win32.whl", hash = "sha256:9dac1924611698f8fe5b2e58601156c01da2b6c0758ba519003013a78280cf4d"}, - {file = "SQLAlchemy-1.4.35-cp36-cp36m-win_amd64.whl", hash = "sha256:e8b09e2d90267717d850f2e2323919ea32004f55c40e5d53b41267e382446044"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:63c82c9e8ccc2fb4bfd87c24ffbac320f70b7c93b78f206c1f9c441fa3013a5f"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:effadcda9a129cc56408dd5b2ea20ee9edcea24bd58e6a1489fa27672d733182"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2c6c411d8c59afba95abccd2b418f30ade674186660a2d310d364843049fb2c1"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2489e70bfa2356f2d421106794507daccf6cc8711753c442fc97272437fc606"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-win32.whl", hash = "sha256:186cb3bd77abf2ddcf722f755659559bfb157647b3fd3f32ea1c70e8311e8f6b"}, - {file = "SQLAlchemy-1.4.35-cp37-cp37m-win_amd64.whl", hash = "sha256:babd63fb7cb6b0440abb6d16aca2be63342a6eea3dc7b613bb7a9357dc36920f"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9e1a72197529ea00357640f21d92ffc7024e156ef9ac36edf271c8335facbc1a"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e255a8dd5572b0c66d6ee53597d36157ad6cf3bc1114f61c54a65189f996ab03"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9bec63b1e20ef69484f530fb4b4837e050450637ff9acd6dccc7003c5013abf8"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95411abc0e36d18f54fa5e24d42960ea3f144fb16caaa5a8c2e492b5424cc82c"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-win32.whl", hash = "sha256:28b17ebbaee6587013be2f78dc4f6e95115e1ec8dd7647c4e7be048da749e48b"}, - {file = "SQLAlchemy-1.4.35-cp38-cp38-win_amd64.whl", hash = "sha256:9e7094cf04e6042c4210a185fa7b9b8b3b789dd6d1de7b4f19452290838e48bd"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:1b4eac3933c335d7f375639885765722534bb4e52e51cdc01a667eea822af9b6"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d8edfb09ed2b865485530c13e269833dab62ab2d582fde21026c9039d4d0e62"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6204d06bfa85f87625e1831ca663f9dba91ac8aec24b8c65d02fb25cbaf4b4d7"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28aa2ef06c904729620cc735262192e622db9136c26d8587f71f29ec7715628a"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-win32.whl", hash = "sha256:ecc81336b46e31ae9c9bdfa220082079914e31a476d088d3337ecf531d861228"}, - {file = "SQLAlchemy-1.4.35-cp39-cp39-win_amd64.whl", hash = "sha256:53c7469b86a60fe2babca4f70111357e6e3d5150373bc85eb3b914356983e89a"}, - {file = "SQLAlchemy-1.4.35.tar.gz", hash = "sha256:2ffc813b01dc6473990f5e575f210ca5ac2f5465ace3908b78ffd6d20058aab5"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win32.whl", hash = "sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win_amd64.whl", hash = "sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win32.whl", hash = "sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win_amd64.whl", hash = "sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win32.whl", hash = "sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win_amd64.whl", hash = "sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win32.whl", hash = "sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win_amd64.whl", hash = "sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win32.whl", hash = "sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win_amd64.whl", hash = "sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win32.whl", hash = "sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, + {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, ] sqlalchemy2-stubs = [ {file = "sqlalchemy2-stubs-0.0.2a22.tar.gz", hash = "sha256:31288db647bbdd411ad1e22da39a10ebe211bdcfe2efef24bcebea05abc28dd4"}, @@ -2778,8 +2801,8 @@ starkbank-ecdsa = [ {file = "starkbank-ecdsa-2.0.3.tar.gz", hash = "sha256:73b62b1b3de54bbaa05dedb1a2d951c033432bb074de899e19d4a96a36b21df6"}, ] starlette = [ - {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, - {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, + {file = "starlette-0.18.0-py3-none-any.whl", hash = "sha256:377d64737a0e03560cb8eaa57604afee143cea5a4996933242798a7820e64f53"}, + {file = "starlette-0.18.0.tar.gz", hash = "sha256:b45c6e9a617ecb5caf7e6446bd8d767b0084d6217e8e1b08187ca5191e10f097"}, ] text-unidecode = [ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, @@ -2854,16 +2877,16 @@ urllib3 = [ {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] uvicorn = [ - {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, - {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, + {file = "uvicorn-0.17.6-py3-none-any.whl", hash = "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6"}, + {file = "uvicorn-0.17.6.tar.gz", hash = "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23"}, ] virtualenv = [ {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, ] watchgod = [ - {file = "watchgod-0.7-py3-none-any.whl", hash = "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7"}, - {file = "watchgod-0.7.tar.gz", hash = "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29"}, + {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, + {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, ] websockets = [ {file = "websockets-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc"}, @@ -2920,70 +2943,70 @@ win32-setctime = [ {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ] wrapt = [ - {file = "wrapt-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763"}, - {file = "wrapt-1.14.0-cp310-cp310-win32.whl", hash = "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff"}, - {file = "wrapt-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3"}, - {file = "wrapt-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0"}, - {file = "wrapt-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425"}, - {file = "wrapt-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036"}, - {file = "wrapt-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8"}, - {file = "wrapt-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06"}, - {file = "wrapt-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9"}, - {file = "wrapt-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68"}, - {file = "wrapt-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0"}, - {file = "wrapt-1.14.0-cp38-cp38-win32.whl", hash = "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f"}, - {file = "wrapt-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c"}, - {file = "wrapt-1.14.0-cp39-cp39-win32.whl", hash = "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350"}, - {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, - {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] yapf = [ {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, diff --git a/pyproject.toml b/pyproject.toml index 0c415ed7..41a816a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,20 +16,20 @@ requests = "^2.26" # Required by aiohttp on windows? idna-ssl = "^1.1" # Simple logger -loguru = "^0.5" +loguru = "^0.6" # Required by loguru on windows? aiocontextvars = "^0.2" atomicwrites = "^1.3" contextvars = "^2.4" win32-setctime = "^1.0" # Image library -pillow = "^8.2" +pillow = "^9.1" # Better / easier datetime library pendulum = "^2.1" # Easier nested dictionary manipulation dpath = "^2.0" # File watcher -watchgod = "^0.7" +watchgod = "^0.8" # Database with ORM SQLAlchemy = "^1.4" # Simple database that operates on dictionaries @@ -43,8 +43,8 @@ sqlmodel = "^0.0.6" # Geometry manipulation Shapely = "^1.8" # Fastapi server -fastapi = "^0.70" -uvicorn = "^0.16" +fastapi = "^0.76" +uvicorn = "^0.17" # End to end tests playwright = "^1.21.0" pytest-playwright = "^0.3.0" @@ -54,17 +54,17 @@ psutil = "^5.8" paramiko = "^2.8" #types-paramiko = "^2.8" # Simpler argparse -click = "^7.1" +click = "^8.1" # SQL ORM peewee = "^3.14" # Sync mongoDB ODM -mongoengine = "^0.23" +mongoengine = "^0.24" # Async mongoDB ODM -beanie = "^1.8" +beanie = "^1.11" # Create sqlalchemy migrations alembic = "^1.7" # Load environment variables from .env file -python-dotenv = "^0.19" +python-dotenv = "^0.20" # Send emails via https://sendgrid.com/ sendgrid = "^6.9" zephyrus-sc2-parser = "^0.3.7" @@ -76,12 +76,12 @@ yapf = "^0.32" # Linting pylint = "^2.12" # Test library -pytest = "^6.2" -pytest-asyncio = "^0.16" +pytest = "^7.1" +pytest-asyncio = "^0.18" pytest-cov = "^3.0" pytest-benchmark = "^3.4" # Type checking -mypy = "^0.930" +mypy = "^0.950" # Statistical testing hypothesis = "^6.34" # Cyclomatic complexity checker @@ -137,18 +137,21 @@ max-line-length = 120 # R0801 duplicate code # W0621 redefining name from outer score # C0103 variable name does not conform snake case naming style -# R0903 Too few public methods of a class -# E1101 Class 'SqlMetaclass' has no '__annotations__' member (no-member) -# R0201 Method could be a function (no-self-use) -# W0603 Allow global -# W0212 Access to a protected member _cookies of a client class (protected-access) -disable = "C0301,E501, C0114, C0115, C0116, R0913, C0413, C0411, W0511, W0105, R0801, W0621, C0103, R0903, E1101, R0201, W0603, W0212" +# R0903: Too few public methods of a class +# E1101: Class 'SqlMetaclass' has no '__annotations__' member (no-member) +# C0302: Too many lines in module (2027/1000) (too-many-lines) +# R0902: Too many instance attributes (62/7) (too-many-instance-attributes) +# R0915: Too many statements (61/50) (too-many-statements) +# W0640: Cell variable mining_place defined in loop (cell-var-from-loop) +# W1514: Using open without explicitly specifying an encoding (unspecified-encoding) +disable = "C0301, E501, C0114, C0115, C0116, R0913, C0413, C0411, W0511, W0105, R0801, W0621, C0103, R0903, E1101, C0302, R0902, R0915, W0640, W1514" [tool.yapf] based_on_style = "pep8" column_limit = 120 split_arguments_when_comma_terminated = true dedent_closing_brackets = true +allow_split_before_dict_value = false [tool.coverage.report] exclude_lines = ["def __repr__", "def main", "if __name__ == .__main__.:", "if 0:", "if False:"] diff --git a/python_examples/data_structures/binary_tree.py b/python_examples/data_structures/binary_tree.py index 8d2aa4bf..7ddc947a 100644 --- a/python_examples/data_structures/binary_tree.py +++ b/python_examples/data_structures/binary_tree.py @@ -1,13 +1,15 @@ +from __future__ import annotations + import itertools -from typing import Any, List, Optional +from typing import Any class Node: - def __init__(self, value: Any, left: 'Node' = None, right: 'Node' = None): + def __init__(self, value: Any, left: Node = None, right: Node = None): self.value: Any = value - self.left: Optional['Node'] = left - self.right: Optional['Node'] = right + self.left: Node | None = left + self.right: Node | None = right def __repr__(self): return f'Node(value: {self.value}, left: {self.left}, right: {self.right})' @@ -50,7 +52,7 @@ def popmax(self): """ Finds the maximum value and returns it """ def load(self, string: str): - height: List[str] = string.strip().split('\n') + height: list[str] = string.strip().split('\n') for i, row in enumerate(height, start=0): if i == 0: assert len(row) == 1 @@ -58,7 +60,7 @@ def load(self, string: str): continue for value, j in zip(row, itertools.product('01', repeat=i)): # ["00", "01", "10", "11"] - cur: Optional[Node] = self.root + cur: Node | None = self.root for k in j[:-1]: # "0", then "1" etc if cur: if k == '0': diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index 0a98b385..be66687d 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -10,7 +10,7 @@ "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write './**/*.{svelte,ts}'", + "format": "prettier --ignore-path .gitignore --write './**/*.{svelte,ts}'", "test": "jest" }, "devDependencies": { diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 865320ff..199de28b 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -9,7 +9,7 @@ "test": "playwright test", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore . --max-warnings 0", + "lint": "eslint --ignore-path .gitignore . --max-warnings 0", "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "update": "npx npm-check-updates -u && npm run prune" diff --git a/svelte_frontend/test_frontend/test_e2e.py b/svelte_frontend/test_frontend/test_e2e.py index 65d853dd..6d34cdd8 100644 --- a/svelte_frontend/test_frontend/test_e2e.py +++ b/svelte_frontend/test_frontend/test_e2e.py @@ -19,6 +19,7 @@ def setup_module(): """ See https://docs.pytest.org/en/6.2.x/xunit_setup.html """ + # pylint: disable=W0603 global FRONTEND_ADDRESS frontend_port = find_next_free_port() backend_port = find_next_free_port(exclude_ports={frontend_port}) @@ -34,12 +35,14 @@ def teardown_module(): class TestClass: + # pylint: disable=R0201 def test_basic_site_display(self, page: Page): """ Check if HOME site is visible """ page.goto(FRONTEND_ADDRESS) assert 'BrowserStorage' in page.content() assert page.inner_text('#browserstorage') == 'BrowserStorage' + # pylint: disable=R0201 def test_show_todos(self, page: Page): """ Check if the to-do site is visible """ page.goto(FRONTEND_ADDRESS) @@ -48,6 +51,7 @@ def test_show_todos(self, page: Page): page.wait_for_timeout(100) assert 'Unable to connect to server' in page.content() + # pylint: disable=R0201 def test_add_todo(self, page: Page): """ Add a new to-do entry """ page.goto(FRONTEND_ADDRESS) diff --git a/write_tests.py b/write_tests.py deleted file mode 100644 index d068883a..00000000 --- a/write_tests.py +++ /dev/null @@ -1,49 +0,0 @@ -""" Deprecated. I personally don't like ghostwriter. You should probably use 'deal.cases()' instead. """ -import subprocess -from pathlib import Path -from typing import List - -from loguru import logger - -IGNORE_FILES = {'__init__', 'main', 'run', 'write_tests'} -IGNORE_FOLDERS = {'node_modules', '.venv'} -IGNORE_STARTS_WITH_FILES = {'test_', 'test-'} - - -def write_tests_for_folder(rootdir: Path, folder: Path): - for file in folder.iterdir(): - if file.is_dir() and file.name in IGNORE_FOLDERS: - continue - if file.is_dir(): - write_tests_for_folder(rootdir, file) - continue - - if file.suffix != '.py': - continue - if any(file.stem.startswith(i) for i in IGNORE_STARTS_WITH_FILES): - continue - if file.stem in IGNORE_FILES: - continue - - target_test_file_name = f'test_{file.name}' - target_test_file = folder / target_test_file_name - if target_test_file.is_file(): - continue - - logger.info(f'Generating test file: {target_test_file.__str__()}') - python_import_file_path = file.relative_to(rootdir).__str__().replace('/', '.')[:-3] - command: List[str] = ['poetry', 'run', 'hypothesis', 'write', python_import_file_path] - with subprocess.Popen(command, cwd=rootdir, stdout=subprocess.PIPE) as process: - out = process.stdout - if out is not None: - data = out.read().decode() - with target_test_file.open('w') as f: - f.write(data) - - -def main(): - write_tests_for_folder(Path('.'), Path('.')) - - -if __name__ == '__main__': - main() From 022db8d294adf11b4c9eaf736a2e6a1a92572d5e Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 13 May 2022 13:44:13 +0200 Subject: [PATCH 049/391] Update github actions yml files --- .github/workflows/publish_example_package.yml | 15 ++++++- .github/workflows/python_examples.yml | 19 ++++----- .github/workflows/test_bored_gems.yml | 2 +- .github/workflows/test_fastapi_server.yml | 14 +++++-- .github/workflows/test_replay_comparer.yml | 2 +- .../test_supabase_stream_scripts.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 40 ++++++++++++++----- .pre-commit-config.yaml | 2 +- 8 files changed, 67 insertions(+), 29 deletions(-) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index 0d9fd1a6..bf2f40e1 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -29,11 +29,24 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install Poetry + run: | + python -m pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + - name: Cache poetry uses: actions/cache@v2 with: path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + + - name: Set up cache + uses: actions/cache@v2 + with: + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install dependencies run: | diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index ebe28691..fa480030 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -32,11 +32,18 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install Poetry + run: | + python -m pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + - name: Cache poetry uses: actions/cache@v2 with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }} + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Start MongoDB in docker run: | @@ -47,18 +54,12 @@ jobs: docker run --rm -d --name postgresql-container -p 5432:5432 \ -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=changeme postgres:9.6.23-alpine3.14 - - uses: actions/cache@v2 - with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }} - - name: Print environment variables (linux) run: | printenv - - name: Install dependencies + - name: Install python dependencies run: | - python -m pip install poetry poetry install - name: Test with pytest diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index 034d26a1..e80d462f 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -34,7 +34,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 3d73a3ce..253a6be5 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -31,16 +31,22 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache poetry + - name: Install Poetry + run: | + python -m pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + + - name: Set up cache uses: actions/cache@v2 with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }} + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies run: | cd ${{ env.SUBDIRECTORY }} - python -m pip install poetry poetry install - name: Run Python tests diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index e5023e23..e390d195 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -37,7 +37,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index c1b0140c..59a8bec0 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -34,7 +34,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 872e6488..f2298eca 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -37,7 +37,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | @@ -81,15 +81,27 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache poetry + - name: Set up cache uses: actions/cache@v2 with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }} + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - - name: Install Python dependencies + - name: Install Poetry run: | python -m pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + + - name: Set up cache + uses: actions/cache@v2 + with: + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + + - name: Install Python dependencies + run: | poetry install - name: Set up Node ${{ matrix.node }} @@ -101,7 +113,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | @@ -137,15 +149,21 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache poetry + - name: Install Poetry + run: | + python -m pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + + - name: Set up cache uses: actions/cache@v2 with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }} + path: .venv + key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies run: | - python -m pip install poetry poetry install - name: Set up Node ${{ matrix.node }} @@ -157,7 +175,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies run: | diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 03c849ff..6e106908 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -86,7 +86,7 @@ repos: hooks: # Autoformat python code - id: yapf - name: format all python code + name: format python code stages: [commit] language: system entry: poetry run yapf --in-place From 62e095307c6ea23b0bd4b4a2137e0abf786c29b4 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 20 May 2022 16:59:57 +0200 Subject: [PATCH 050/391] Improve pre-commit --- .pre-commit-config.yaml | 34 ++++++------------- README.md | 4 +-- .../modify_dictionary.py | 9 +++-- 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6e106908..23952c5d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -92,16 +92,14 @@ repos: entry: poetry run yapf --in-place files: ^.*\.py$ pass_filenames: true - require_serial: true - id: pylint name: pylint stages: [commit] language: system entry: poetry run pylint - types: [python] + files: ^.*\.py$ pass_filenames: true - require_serial: true # Run mypy type checks - id: mypy @@ -109,10 +107,10 @@ repos: stages: [commit] language: system entry: poetry run mypy - types: [python] + files: ^.*\.py$ pass_filenames: true - require_serial: true + # TODO Figure out how to only format changed frontend files - have to pass in file names to the bash command? - id: format_svelte_frontend name: format_svelte_frontend stages: [commit] @@ -120,7 +118,6 @@ repos: entry: bash -c "cd svelte_frontend && npm run format" files: ^svelte_frontend/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: lint_svelte_frontend name: lint_svelte_frontend @@ -129,7 +126,6 @@ repos: entry: bash -c "cd svelte_frontend && npm run lint" files: ^svelte_frontend/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: format_supabase_stream_scripts name: format_supabase_stream_scripts @@ -138,7 +134,6 @@ repos: entry: bash -c "cd supabase_stream_scripts && npm run format" files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: lint_supabase_stream_scripts name: lint_supabase_stream_scripts @@ -147,7 +142,6 @@ repos: entry: bash -c "cd supabase_stream_scripts && npm run lint" files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: format_replay_comparer name: format_replay_comparer @@ -156,7 +150,6 @@ repos: entry: bash -c "cd replay_comparer && npm run format" files: ^replay_comparer/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: lint_replay_comparer name: lint_replay_comparer @@ -165,7 +158,6 @@ repos: entry: bash -c "cd replay_comparer && npm run lint" files: ^replay_comparer/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: format_bored_gems name: format_bored_gems @@ -174,7 +166,6 @@ repos: entry: bash -c "cd bored_gems && npm run format" files: ^bored_gems/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: lint_bored_gems name: lint_bored_gems @@ -183,51 +174,48 @@ repos: entry: bash -c "cd bored_gems && npm run lint" files: ^bored_gems/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true # Run python examples tests - id: pytest_python_examples name: pytest_python_examples - stages: [commit] + stages: [post-commit] language: system entry: poetry run pytest python_examples pass_filenames: false - require_serial: true # Run fastapi server tests - id: pytest_fastapi_server name: pytest_fastapi_server - stages: [commit] + stages: [post-commit] language: system entry: poetry run pytest fastapi_server pass_filenames: false - require_serial: true # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) - id: test_supabase_stream_scripts name: test_supabase_stream_scripts - stages: [commit] + stages: [post-commit] language: system entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" + files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true - id: test_bored_gems name: test_bored_gems - stages: [commit] + stages: [post-commit] language: system entry: bash -c "cd bored_gems && npm run test" + files: ^bored_gems/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true # Run svelte e2e tests - id: svelte_e2e_tests name: svelte_e2e_tests - stages: [commit] + stages: [post-commit] language: system entry: poetry run pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip + files: ^svelte_frontend/.*\.(svelte|ts|js)$ pass_filenames: false - require_serial: true # - id: pytest-cov # name: pytest diff --git a/README.md b/README.md index 86a075e3..f25fe296 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,10 @@ then use `coverage gutters` extension in VScode or open the generated html file in folder `htmlcov` -# Install and run all pre-commit hook scripts +# Install and run pre-commit hook on all staged files ```py poetry run pre-commit install -poetry run pre-commit run --all-files +poetry run pre-commit run --verbose ``` This runs pylint, mypy, pytest tests, apply autoformatter yapf diff --git a/python_examples/examples/dataclasses_and_dicts/modify_dictionary.py b/python_examples/examples/dataclasses_and_dicts/modify_dictionary.py index 2740e6b2..6b408423 100644 --- a/python_examples/examples/dataclasses_and_dicts/modify_dictionary.py +++ b/python_examples/examples/dataclasses_and_dicts/modify_dictionary.py @@ -14,11 +14,16 @@ def modify_dictionary(): merge(my_dict, to_merge) # Get a value, if it doesn't exist: return default - value = get(my_dict, ['this', 'is', 'my', 'path']) + value = my_dict['this']['is']['my']['path'] assert value == 5 + + value_again = get(my_dict, ['this', 'is', 'my', 'path']) + assert value_again == 5 + value = get(my_dict, ['this', 'path', 'doesnt', 'exist'], default=4) assert value == 4 - value = get(my_dict, ['this', 'is', 'another', 'dict'], default=6) + + value = get(my_dict, ['this', 'is', 'another', 'dict'], default=7) assert value == 6 logger.info(my_dict) From b554a2dc93144bea5961865adbe0771d50399fe7 Mon Sep 17 00:00:00 2001 From: burny Date: Mon, 23 May 2022 20:12:31 +0200 Subject: [PATCH 051/391] Set stages from post-commit to commit again --- .pre-commit-config.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 23952c5d..524d3c72 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -178,7 +178,7 @@ repos: # Run python examples tests - id: pytest_python_examples name: pytest_python_examples - stages: [post-commit] + stages: [commit] language: system entry: poetry run pytest python_examples pass_filenames: false @@ -186,7 +186,7 @@ repos: # Run fastapi server tests - id: pytest_fastapi_server name: pytest_fastapi_server - stages: [post-commit] + stages: [commit] language: system entry: poetry run pytest fastapi_server pass_filenames: false @@ -194,7 +194,7 @@ repos: # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) - id: test_supabase_stream_scripts name: test_supabase_stream_scripts - stages: [post-commit] + stages: [commit] language: system entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ @@ -202,7 +202,7 @@ repos: - id: test_bored_gems name: test_bored_gems - stages: [post-commit] + stages: [commit] language: system entry: bash -c "cd bored_gems && npm run test" files: ^bored_gems/.*\.(svelte|ts|js)$ @@ -211,7 +211,7 @@ repos: # Run svelte e2e tests - id: svelte_e2e_tests name: svelte_e2e_tests - stages: [post-commit] + stages: [commit] language: system entry: poetry run pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip files: ^svelte_frontend/.*\.(svelte|ts|js)$ From c4e6ed0ef7f25c7ab5e6312aca30505799e65449 Mon Sep 17 00:00:00 2001 From: burny Date: Wed, 25 May 2022 17:34:13 +0200 Subject: [PATCH 052/391] Print metadata for sqlite table --- python_examples/examples/databases/sqlite_example.py | 10 +++++++++- python_examples/examples/databases/sqlmodel_example.py | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/python_examples/examples/databases/sqlite_example.py b/python_examples/examples/databases/sqlite_example.py index 50a90202..325e75ec 100644 --- a/python_examples/examples/databases/sqlite_example.py +++ b/python_examples/examples/databases/sqlite_example.py @@ -12,7 +12,7 @@ def test_database(): # Creates a new table "people" with 3 columns: text, real, integer # Fields marked with PRIMARY KEY are columns with unique values (?) db.execute( - 'CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE, age INTEGER, height REAL)', + 'CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(30) UNIQUE, age INTEGER, height REAL)', ) # Insert via string @@ -90,6 +90,14 @@ def test_database(): # TODO: How to add or remove a column in existing database? # TODO: How to join two databases? + tables = db.execute("SELECT name FROM sqlite_master WHERE type='table'") + for table in tables: + table_name = table['name'] + logger.info(f'Table: {table_name}') + table_info = db.execute(f'pragma table_info({table_name})') + for column_info in table_info: + logger.info(dict(column_info)) + if __name__ == '__main__': test_database() diff --git a/python_examples/examples/databases/sqlmodel_example.py b/python_examples/examples/databases/sqlmodel_example.py index 8c4a689c..964c8d87 100644 --- a/python_examples/examples/databases/sqlmodel_example.py +++ b/python_examples/examples/databases/sqlmodel_example.py @@ -7,7 +7,7 @@ class Hero(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) name: str - secret_name: str + secret_name: str = Field(max_length=30) age: Optional[int] = None @@ -16,6 +16,7 @@ def test_database_with_sqlmodel(): hero_2 = Hero(name='Spider-Boy', secret_name='Pedro Parqueador') hero_3 = Hero(name='Rusty-Man', secret_name='Tommy Sharp', age=48) + # engine = create_engine('sqlite:///temp.db') engine = create_engine('sqlite:///:memory:') SQLModel.metadata.create_all(engine) From f2cd78c254611afb5124664ba2a968a9bd926a2d Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:32:21 +0200 Subject: [PATCH 053/391] Add plot examples, disable network in replay parser function call --- .github/workflows/publish_example_package.yml | 4 +- .github/workflows/python_examples.yml | 2 +- .github/workflows/test_fastapi_server.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 2 +- fastapi_server/routes/replay_parser.py | 2 +- .../replay_parser/test_replay_parser.py | 10 +- poetry.lock | 1537 +++++++++++++---- pyproject.toml | 16 +- python_examples/examples/plot_data/README.md | 15 + .../examples/plot_data/__init__.py | 0 .../examples/plot_data/bokeh_plot.py | 161 ++ .../examples/plot_data/matplotlib_plot.py | 154 ++ .../examples/plot_data/pandas_plot.py | 171 ++ .../examples/plot_data/seaborn_plot.py | 90 + python_examples/main.py | 17 +- 15 files changed, 1852 insertions(+), 331 deletions(-) create mode 100644 python_examples/examples/plot_data/README.md create mode 100644 python_examples/examples/plot_data/__init__.py create mode 100644 python_examples/examples/plot_data/bokeh_plot.py create mode 100644 python_examples/examples/plot_data/matplotlib_plot.py create mode 100644 python_examples/examples/plot_data/pandas_plot.py create mode 100644 python_examples/examples/plot_data/seaborn_plot.py diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index bf2f40e1..91b6f3a1 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -31,7 +31,7 @@ jobs: - name: Install Poetry run: | - python -m pip install poetry + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true @@ -50,7 +50,7 @@ jobs: - name: Install dependencies run: | - python -m pip install poetry + pip install poetry cd ${{ env.SUBDIRECTORY }} poetry install --no-dev diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index fa480030..d2ce921f 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -34,7 +34,7 @@ jobs: - name: Install Poetry run: | - python -m pip install poetry + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 253a6be5..0167ab52 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -33,7 +33,7 @@ jobs: - name: Install Poetry run: | - python -m pip install poetry + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index f2298eca..528faecd 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -89,7 +89,7 @@ jobs: - name: Install Poetry run: | - python -m pip install poetry + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true diff --git a/fastapi_server/routes/replay_parser.py b/fastapi_server/routes/replay_parser.py index fb010940..fbbbfdb8 100644 --- a/fastapi_server/routes/replay_parser.py +++ b/fastapi_server/routes/replay_parser.py @@ -67,7 +67,7 @@ async def parse_replay_endpoint(replay_tick: float = Form(112), replay_file: Upl replay_tick = max(20, int(round(replay_tick))) # https://fastapi.tiangolo.com/tutorial/request-files/#uploadfile players, timeline, _engagements, summary, metadata = parse_replay( - replay_file.file, local=True, tick=replay_tick, network=True + replay_file.file, local=True, tick=replay_tick, network=False ) player1 = ParserPlayer.from_replay_object(players[1]) diff --git a/fastapi_server/test/endpoints_test/replay_parser/test_replay_parser.py b/fastapi_server/test/endpoints_test/replay_parser/test_replay_parser.py index a4075ab7..9ce6007b 100644 --- a/fastapi_server/test/endpoints_test/replay_parser/test_replay_parser.py +++ b/fastapi_server/test/endpoints_test/replay_parser/test_replay_parser.py @@ -1,6 +1,7 @@ from pathlib import Path from starlette.testclient import TestClient +from zephyrus_sc2_parser import parse_replay from fastapi_server.test.base_test import BaseTest @@ -10,6 +11,13 @@ REPLAYS_PATH_LIST = list(replay for replay in REPLAY_FOLDER.iterdir() if replay.suffix == '.SC2Replay') +def test_parse_replay(): + for replay_path in REPLAYS_PATH_LIST: + assert replay_path.is_file() + with replay_path.open('rb') as f: + parse_replay(f, local=True, tick=SECOND * 100, network=False) + + class TestReplayParser(BaseTest): def test_replays(self): @@ -18,7 +26,7 @@ def test_replays(self): assert replay_path.is_file() with replay_path.open('rb') as f: files = [('replay_file', f)] - response = client.post('/parse_replay', files=files, data={'replay_tick': SECOND * 100}) + response = client.post('/parse_replay', files=files, data={'replay_tick': SECOND * 100}, timeout=10) assert response.status_code == 200 reponse_data = response.json() assert isinstance(reponse_data['player1'], dict) diff --git a/poetry.lock b/poetry.lock index dca3355c..a3d17298 100644 --- a/poetry.lock +++ b/poetry.lock @@ -56,7 +56,7 @@ tz = ["python-dateutil"] [[package]] name = "anyio" -version = "3.5.0" +version = "3.6.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false @@ -68,12 +68,12 @@ sniffio = ">=1.1" [package.extras] doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] [[package]] name = "asgiref" -version = "3.5.1" +version = "3.5.2" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -84,7 +84,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.4" +version = "2.11.5" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -155,13 +155,30 @@ pydantic = ">=1.9.0" toml = "*" yarl = ">=1.6" +[[package]] +name = "bokeh" +version = "2.4.3" +description = "Interactive plots and applications in the browser from Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Jinja2 = ">=2.9" +numpy = ">=1.11.3" +packaging = ">=16.8" +pillow = ">=7.1.0" +PyYAML = ">=3.10" +tornado = ">=5.1" +typing-extensions = ">=3.10.0" + [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.5.18.1" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" @@ -204,14 +221,37 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-default-group" +version = "1.2.2" +description = "Extends click.Group to invoke a command without explicit subcommand name" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" + [[package]] name = "cloudpickle" -version = "2.0.0" +version = "2.1.0" description = "Extended pickling support for Python objects" category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "cloup" +version = "0.13.1" +description = "Adds features to Click: option groups, constraints, subcommand sections and help themes." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +click = ">=7.1,<9.0" +typing-extensions = {version = "*", markers = "python_version <= \"3.8\""} + [[package]] name = "colorama" version = "0.4.4" @@ -220,11 +260,22 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "colour" +version = "0.1.5" +description = "converts and manipulates various color representation (HSL, RVB, web, X11, ...)" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +test = ["nose"] + [[package]] name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" -category = "dev" +category = "main" optional = false python-versions = "*" @@ -244,14 +295,14 @@ immutables = ">=0.9" [[package]] name = "coverage" -version = "6.3.2" +version = "6.4" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -tomli = {version = "*", optional = true, markers = "extra == \"toml\""} +tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""} [package.extras] toml = ["tomli"] @@ -275,6 +326,22 @@ sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cython" +version = "0.29.30" +description = "The Cython compiler for writing C extensions for the Python language." +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + [[package]] name = "dataclasses-json" version = "0.5.7" @@ -291,13 +358,21 @@ typing-inspect = ">=0.4.0" [package.extras] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "main" +optional = false +python-versions = ">=3.5" + [[package]] name = "dill" -version = "0.3.4" +version = "0.3.5.1" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" [package.extras] graph = ["objgraph (>=1.7.2)"] @@ -338,7 +413,7 @@ test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.91 [[package]] name = "filelock" -version = "3.6.0" +version = "3.7.0" description = "A platform independent file lock." category = "dev" optional = false @@ -348,6 +423,28 @@ python-versions = ">=3.7" docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] +[[package]] +name = "fonttools" +version = "4.33.3" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["scipy", "munkres"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] + [[package]] name = "frozenlist" version = "1.3.0" @@ -364,6 +461,14 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "glcontext" +version = "2.3.6" +description = "Portable OpenGL Context" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "greenlet" version = "1.1.2" @@ -385,7 +490,7 @@ python-versions = ">=3.6" [[package]] name = "hypothesis" -version = "6.46.2" +version = "6.46.9" description = "A library for property-based testing" category = "dev" optional = false @@ -413,7 +518,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] [[package]] name = "identify" -version = "2.5.0" +version = "2.5.1" description = "File identification library for Python" category = "dev" optional = false @@ -443,18 +548,18 @@ idna = ">=2.0" [[package]] name = "immutables" -version = "0.17" +version = "0.18" description = "Immutable Collections" category = "main" optional = false python-versions = ">=3.6" [package.extras] -test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (>=0.910)", "pytest (>=6.2.4,<6.3.0)"] +test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (==0.942)", "pytest (>=6.2.4,<6.3.0)"] [[package]] name = "importlib-metadata" -version = "4.11.3" +version = "4.11.4" description = "Read metadata from Python packages" category = "main" optional = false @@ -505,6 +610,39 @@ requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] +[[package]] +name = "isosurfaces" +version = "0.1.0" +description = "Construct isolines/isosurfaces over a 2D/3D scalar field defined by a function (not a uniform grid)" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = "*" + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "kiwisolver" +version = "1.4.2" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "lazy-object-proxy" version = "1.7.1" @@ -569,6 +707,66 @@ six = "*" [package.extras] restructuredText = ["rst2ansi"] +[[package]] +name = "manim" +version = "0.15.2" +description = "Animation engine for explanatory math videos." +category = "main" +optional = false +python-versions = ">=3.7,<3.11" + +[package.dependencies] +click = ">=7.2" +click-default-group = ">=1.2.2,<2.0.0" +cloup = ">=0.13.0,<0.14.0" +colour = ">=0.1.5,<0.2.0" +decorator = ">=5.0.7,<6.0.0" +isosurfaces = "0.1.0" +manimpango = ">=0.4.0.post0,<0.5.0" +mapbox-earcut = ">=0.12.10,<0.13.0" +moderngl = ">=5.6.3,<6.0.0" +moderngl-window = ">=2.3.0,<3.0.0" +networkx = ">=2.5,<3.0" +numpy = ">=1.9,<2.0" +Pillow = ">=8.4,<10.0" +pycairo = ">=1.19,<2.0" +pydub = ">=0.25.1,<0.26.0" +Pygments = ">=2.10.0,<3.0.0" +requests = ">=2.26.0,<3.0.0" +rich = ">=6.0,<12.0.0 || >12.0.0" +scipy = ">=1.7.3,<2.0.0" +screeninfo = ">=0.8,<0.9" +skia-pathops = ">=0.7.0,<0.8.0" +srt = ">=3.5.0,<4.0.0" +tqdm = ">=4.62.3,<5.0.0" +watchdog = ">=2.1.6,<3.0.0" + +[package.extras] +jupyterlab = ["jupyterlab (>=3.0,<4.0)"] +gui = ["dearpygui (>=1.3.1,<2.0.0)"] + +[[package]] +name = "manimpango" +version = "0.4.1" +description = "Bindings for Pango for using with Manim." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mapbox-earcut" +version = "0.12.11" +description = "Python bindings for the mapbox earcut C++ polygon triangulation library." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = "*" + +[package.extras] +test = ["pytest"] + [[package]] name = "markupsafe" version = "2.1.1" @@ -605,6 +803,25 @@ python-versions = "*" [package.dependencies] marshmallow = ">=2.0.0" +[[package]] +name = "matplotlib" +version = "3.5.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.17" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" +setuptools_scm = ">=4" + [[package]] name = "mccabe" version = "0.7.0" @@ -613,6 +830,42 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "moderngl" +version = "5.6.4" +description = "ModernGL: High performance rendering for Python 3" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +glcontext = ">=2,<3" + +[[package]] +name = "moderngl-window" +version = "2.4.1" +description = "A cross platform helper library for ModernGL making window creation and resource loading simple" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +moderngl = "<6" +numpy = ">=1.16,<2" +Pillow = ">=5" +pyglet = ">=1.5.8,<2" +pyrr = ">=0.10.3,<1" + +[package.extras] +pysdl2 = ["pysdl2"] +pyside2 = ["PySide2 (<6)"] +glfw = ["glfw"] +pygame = ["pygame (>=2.0.1)"] +pyqt5 = ["pyqt5"] +pywavefront = ["pywavefront (>=1.2.0,<2)"] +tk = ["pyopengltk (>=0.0.3)"] +trimesh = ["trimesh (>=3.2.6,<4)", "scipy (>=1.3.2)"] + [[package]] name = "mongoengine" version = "0.24.1" @@ -654,6 +907,17 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "multipledispatch" +version = "0.6.0" +description = "Multiple dispatch" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + [[package]] name = "mypy" version = "0.950" @@ -680,6 +944,21 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "networkx" +version = "2.8.2" +description = "Python package for creating and manipulating graphs and networks" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +default = ["numpy (>=1.19)", "scipy (>=1.8)", "matplotlib (>=3.4)", "pandas (>=1.3)"] +developer = ["pre-commit (>=2.18)", "mypy (>=0.942)"] +doc = ["sphinx (>=4.5)", "pydata-sphinx-theme (>=0.8.1)", "sphinx-gallery (>=0.10)", "numpydoc (>=1.3)", "pillow (>=9.1)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pygraphviz (>=1.9)", "pydot (>=1.4.2)", "sympy (>=1.10)"] +test = ["pytest (>=7.1)", "pytest-cov (>=3.0)", "codecov (>=2.1)"] + [[package]] name = "nodeenv" version = "1.6.0" @@ -690,7 +969,7 @@ python-versions = "*" [[package]] name = "numpy" -version = "1.22.3" +version = "1.22.4" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false @@ -707,9 +986,30 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "pandas" +version = "1.4.2" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = [ + {version = ">=1.18.5", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, + {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, +] +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" + +[package.extras] +test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] + [[package]] name = "paramiko" -version = "2.10.4" +version = "2.11.0" description = "SSH2 protocol library" category = "main" optional = false @@ -749,7 +1049,7 @@ pytzdata = ">=2020.1" [[package]] name = "pillow" -version = "9.1.0" +version = "9.1.1" description = "Python Imaging Library (Fork)" category = "main" optional = false @@ -773,7 +1073,7 @@ test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytes [[package]] name = "playwright" -version = "1.21.0" +version = "1.22.0" description = "A high-level API to automate web browsers" category = "main" optional = false @@ -815,14 +1115,14 @@ virtualenv = ">=20.0.8" [[package]] name = "psutil" -version = "5.9.0" +version = "5.9.1" description = "Cross-platform lib for process and system monitoring in Python." category = "main" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] -test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] [[package]] name = "py" @@ -840,6 +1140,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "pycairo" +version = "1.21.0" +description = "Python interface for cairo" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "pycparser" version = "2.21" @@ -850,8 +1158,8 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pydantic" -version = "1.9.0" -description = "Data validation and settings management using python 3.6 type hinting" +version = "1.9.1" +description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.6.1" @@ -863,6 +1171,14 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pydub" +version = "0.25.1" +description = "Manipulate audio with an simple and easy high level interface" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pyee" version = "8.1.0" @@ -871,24 +1187,32 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pyglet" +version = "1.5.26" +description = "Cross-platform windowing and multimedia library" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pygments" version = "2.12.0" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" +category = "main" optional = false python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.13.8" +version = "2.13.9" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -astroid = ">=2.11.3,<=2.12.0-dev0" +astroid = ">=2.11.5,<=2.12.0-dev0" colorama = {version = "*", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -941,9 +1265,28 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "pyobjc-core" +version = "8.5" +description = "Python<->ObjC Interoperability Module" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "pyobjc-framework-cocoa" +version = "8.5" +description = "Wrappers for the Cocoa frameworks on macOS" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyobjc-core = ">=8.5" + [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -952,6 +1295,18 @@ python-versions = ">=3.6.8" [package.extras] diagrams = ["railroad-diagrams", "jinja2"] +[[package]] +name = "pyrr" +version = "0.10.3" +description = "3D mathematical functions using NumPy" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +multipledispatch = "*" +numpy = "*" + [[package]] name = "pytest" version = "7.1.2" @@ -1067,14 +1422,6 @@ python-versions = ">=3.5" [package.extras] cli = ["click (>=5.0)"] -[[package]] -name = "python-http-client" -version = "3.3.7" -description = "HTTP REST client, simplified for Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - [[package]] name = "python-multipart" version = "0.0.5" @@ -1120,7 +1467,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -1157,9 +1504,9 @@ use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] name = "rich" -version = "12.3.0" +version = "12.4.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "dev" +category = "main" optional = false python-versions = ">=3.6.3,<4.0.0" @@ -1186,16 +1533,57 @@ pynvml = ">=11.0.0" rich = ">=9.2.0" [[package]] -name = "sendgrid" -version = "6.9.7" -description = "Twilio SendGrid library for Python" +name = "scipy" +version = "1.8.1" +description = "SciPy: Scientific Library for Python" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.8,<3.11" + +[package.dependencies] +numpy = ">=1.17.3,<1.25.0" + +[[package]] +name = "screeninfo" +version = "0.8" +description = "Fetch location and size of physical screens." +category = "main" +optional = false +python-versions = ">=3.6.2,<4.0.0" + +[package.dependencies] +Cython = {version = "*", markers = "sys_platform == \"darwin\""} +pyobjc-framework-Cocoa = {version = "*", markers = "sys_platform == \"darwin\""} + +[[package]] +name = "seaborn" +version = "0.11.2" +description = "seaborn: statistical data visualization" +category = "main" +optional = false +python-versions = ">=3.6" [package.dependencies] -python-http-client = ">=3.2.1" -starkbank-ecdsa = ">=2.0.1" +matplotlib = ">=2.2" +numpy = ">=1.15" +pandas = ">=0.23" +scipy = ">=1.0" + +[[package]] +name = "setuptools-scm" +version = "6.4.2" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +packaging = ">=20.0" +tomli = ">=1.0.0" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] [[package]] name = "shapely" @@ -1218,6 +1606,17 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "skia-pathops" +version = "0.7.2" +description = "Python access to operations on paths using the Skia library" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +testing = ["pytest", "coverage", "pytest-xdist", "pytest-randomly"] + [[package]] name = "snakeviz" version = "2.1.1" @@ -1302,12 +1701,12 @@ SQLAlchemy = ">=1.4.17,<1.5.0" sqlalchemy2-stubs = "*" [[package]] -name = "starkbank-ecdsa" -version = "2.0.3" -description = "A lightweight and fast pure python ECDSA library" +name = "srt" +version = "3.5.2" +description = "A tiny library for parsing, modifying, and composing SRT files." category = "main" optional = false -python-versions = "*" +python-versions = ">=2.7" [[package]] name = "starlette" @@ -1360,10 +1759,27 @@ python-versions = ">=3.7" name = "tornado" version = "6.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "dev" +category = "main" optional = false python-versions = ">= 3.5" +[[package]] +name = "tqdm" +version = "4.64.0" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "typing-extensions" version = "4.2.0" @@ -1431,6 +1847,17 @@ six = ">=1.9.0,<2" docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] +[[package]] +name = "watchdog" +version = "2.1.8" +description = "Filesystem events monitoring" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [[package]] name = "watchgod" version = "0.8.2" @@ -1517,7 +1944,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "e54204305fbaa04f3ec07cac21c190afad20cabf9cc23266ed3372bc84baef2e" +content-hash = "1b74bef1626f6d7341bfda4a81a0cfa9bf2add0d85b13588f61bfbff6bafda44" [metadata.files] aiocontextvars = [ @@ -1607,16 +2034,16 @@ alembic = [ {file = "alembic-1.7.7.tar.gz", hash = "sha256:4961248173ead7ce8a21efb3de378f13b8398e6630fab0eb258dc74a8af24c58"}, ] anyio = [ - {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, - {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, + {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, + {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, ] asgiref = [ - {file = "asgiref-3.5.1-py3-none-any.whl", hash = "sha256:45a429524fba18aba9d512498b19d220c4d628e75b40cf5c627524dbaebc5cc1"}, - {file = "asgiref-3.5.1.tar.gz", hash = "sha256:fddeea3c53fa99d0cdb613c3941cc6e52d822491fc2753fba25768fb5bf4e865"}, + {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, + {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, ] astroid = [ - {file = "astroid-2.11.4-py3-none-any.whl", hash = "sha256:da0632b7c046d8361dfe1b1abb2e085a38624961fabe2997565a9c06c1be9d9a"}, - {file = "astroid-2.11.4.tar.gz", hash = "sha256:561dc6015eecce7e696ff7e3b40434bc56831afeff783f0ea853e19c4f635c06"}, + {file = "astroid-2.11.5-py3-none-any.whl", hash = "sha256:14ffbb4f6aa2cf474a0834014005487f7ecd8924996083ab411e7fa0b508ce0b"}, + {file = "astroid-2.11.5.tar.gz", hash = "sha256:f4e4ec5294c4b07ac38bab9ca5ddd3914d4bf46f9006eb5c0ae755755061044e"}, ] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, @@ -1647,9 +2074,13 @@ beanie = [ {file = "beanie-1.11.0-py3-none-any.whl", hash = "sha256:60102e1803bf87f6a96ce06601f6de7770f9825c37b7144717d10254f52cc4e7"}, {file = "beanie-1.11.0.tar.gz", hash = "sha256:634a1d0d49bc567340481a13703e8a305cd3f28a475185e1447073e1d42122c3"}, ] +bokeh = [ + {file = "bokeh-2.4.3-py3-none-any.whl", hash = "sha256:104d2f0a4ca7774ee4b11e545aa34ff76bf3e2ad6de0d33944361981b65da420"}, + {file = "bokeh-2.4.3.tar.gz", hash = "sha256:ef33801161af379665ab7a34684f2209861e3aefd5c803a21fbbb99d94874b03"}, +] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, + {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, ] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, @@ -1715,14 +2146,25 @@ click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] +click-default-group = [ + {file = "click-default-group-1.2.2.tar.gz", hash = "sha256:d9560e8e8dfa44b3562fbc9425042a0fd6d21956fcc2db0077f63f34253ab904"}, +] cloudpickle = [ - {file = "cloudpickle-2.0.0-py3-none-any.whl", hash = "sha256:6b2df9741d06f43839a3275c4e6632f7df6487a1f181f5f46a052d3c917c3d11"}, - {file = "cloudpickle-2.0.0.tar.gz", hash = "sha256:5cd02f3b417a783ba84a4ec3e290ff7929009fe51f6405423cfccfadd43ba4a4"}, + {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, + {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, +] +cloup = [ + {file = "cloup-0.13.1-py2.py3-none-any.whl", hash = "sha256:04a29a483e122c04f401547dcbce451ce002ff3e392308122619d5b9009f321f"}, + {file = "cloup-0.13.1.tar.gz", hash = "sha256:ea0acc67eed994b86e79b70d76bc2ea525b7f98f3cd8e63696896d549597ef4d"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] +colour = [ + {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, + {file = "colour-0.1.5.tar.gz", hash = "sha256:af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee"}, +] commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, @@ -1731,47 +2173,47 @@ contextvars = [ {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, ] coverage = [ - {file = "coverage-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf"}, - {file = "coverage-6.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05"}, - {file = "coverage-6.3.2-cp310-cp310-win32.whl", hash = "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39"}, - {file = "coverage-6.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1"}, - {file = "coverage-6.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4"}, - {file = "coverage-6.3.2-cp37-cp37m-win32.whl", hash = "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca"}, - {file = "coverage-6.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2"}, - {file = "coverage-6.3.2-cp38-cp38-win32.whl", hash = "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e"}, - {file = "coverage-6.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684"}, - {file = "coverage-6.3.2-cp39-cp39-win32.whl", hash = "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4"}, - {file = "coverage-6.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92"}, - {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, - {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, + {file = "coverage-6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50ed480b798febce113709846b11f5d5ed1e529c88d8ae92f707806c50297abf"}, + {file = "coverage-6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26f8f92699756cb7af2b30720de0c5bb8d028e923a95b6d0c891088025a1ac8f"}, + {file = "coverage-6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c2147921da7f4d2d04f570e1838db32b95c5509d248f3fe6417e91437eaf41"}, + {file = "coverage-6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:750e13834b597eeb8ae6e72aa58d1d831b96beec5ad1d04479ae3772373a8088"}, + {file = "coverage-6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5b9ee0fc146e907aa0f5fb858c3b3da9199d78b7bb2c9973d95550bd40f701"}, + {file = "coverage-6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a022394996419142b33a0cf7274cb444c01d2bb123727c4bb0b9acabcb515dea"}, + {file = "coverage-6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5a78cf2c43b13aa6b56003707c5203f28585944c277c1f3f109c7b041b16bd39"}, + {file = "coverage-6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9229d074e097f21dfe0643d9d0140ee7433814b3f0fc3706b4abffd1e3038632"}, + {file = "coverage-6.4-cp310-cp310-win32.whl", hash = "sha256:fb45fe08e1abc64eb836d187b20a59172053999823f7f6ef4f18a819c44ba16f"}, + {file = "coverage-6.4-cp310-cp310-win_amd64.whl", hash = "sha256:3cfd07c5889ddb96a401449109a8b97a165be9d67077df6802f59708bfb07720"}, + {file = "coverage-6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:03014a74023abaf5a591eeeaf1ac66a73d54eba178ff4cb1fa0c0a44aae70383"}, + {file = "coverage-6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c82f2cd69c71698152e943f4a5a6b83a3ab1db73b88f6e769fabc86074c3b08"}, + {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b546cf2b1974ddc2cb222a109b37c6ed1778b9be7e6b0c0bc0cf0438d9e45a6"}, + {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc173f1ce9ffb16b299f51c9ce53f66a62f4d975abe5640e976904066f3c835d"}, + {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c53ad261dfc8695062fc8811ac7c162bd6096a05a19f26097f411bdf5747aee7"}, + {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:eef5292b60b6de753d6e7f2d128d5841c7915fb1e3321c3a1fe6acfe76c38052"}, + {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:543e172ce4c0de533fa892034cce260467b213c0ea8e39da2f65f9a477425211"}, + {file = "coverage-6.4-cp37-cp37m-win32.whl", hash = "sha256:00c8544510f3c98476bbd58201ac2b150ffbcce46a8c3e4fb89ebf01998f806a"}, + {file = "coverage-6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b84ab65444dcc68d761e95d4d70f3cfd347ceca5a029f2ffec37d4f124f61311"}, + {file = "coverage-6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d548edacbf16a8276af13063a2b0669d58bbcfca7c55a255f84aac2870786a61"}, + {file = "coverage-6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:033ebec282793bd9eb988d0271c211e58442c31077976c19c442e24d827d356f"}, + {file = "coverage-6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:742fb8b43835078dd7496c3c25a1ec8d15351df49fb0037bffb4754291ef30ce"}, + {file = "coverage-6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55fae115ef9f67934e9f1103c9ba826b4c690e4c5bcf94482b8b2398311bf9c"}, + {file = "coverage-6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd698341626f3c77784858427bad0cdd54a713115b423d22ac83a28303d1d95"}, + {file = "coverage-6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d382f7d77eeeaff14b30516b17bcbe80f645f5cf02bb755baac376591c653c"}, + {file = "coverage-6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:016d7f5cf1c8c84f533a3c1f8f36126fbe00b2ec0ccca47cc5731c3723d327c6"}, + {file = "coverage-6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:69432946f154c6add0e9ede03cc43b96e2ef2733110a77444823c053b1ff5166"}, + {file = "coverage-6.4-cp38-cp38-win32.whl", hash = "sha256:83bd142cdec5e4a5c4ca1d4ff6fa807d28460f9db919f9f6a31babaaa8b88426"}, + {file = "coverage-6.4-cp38-cp38-win_amd64.whl", hash = "sha256:4002f9e8c1f286e986fe96ec58742b93484195defc01d5cc7809b8f7acb5ece3"}, + {file = "coverage-6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e4f52c272fdc82e7c65ff3f17a7179bc5f710ebc8ce8a5cadac81215e8326740"}, + {file = "coverage-6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5578efe4038be02d76c344007b13119b2b20acd009a88dde8adec2de4f630b5"}, + {file = "coverage-6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8099ea680201c2221f8468c372198ceba9338a5fec0e940111962b03b3f716a"}, + {file = "coverage-6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a00441f5ea4504f5abbc047589d09e0dc33eb447dc45a1a527c8b74bfdd32c65"}, + {file = "coverage-6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e76bd16f0e31bc2b07e0fb1379551fcd40daf8cdf7e24f31a29e442878a827c"}, + {file = "coverage-6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8d2e80dd3438e93b19e1223a9850fa65425e77f2607a364b6fd134fcd52dc9df"}, + {file = "coverage-6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:341e9c2008c481c5c72d0e0dbf64980a4b2238631a7f9780b0fe2e95755fb018"}, + {file = "coverage-6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21e6686a95025927775ac501e74f5940cdf6fe052292f3a3f7349b0abae6d00f"}, + {file = "coverage-6.4-cp39-cp39-win32.whl", hash = "sha256:968ed5407f9460bd5a591cefd1388cc00a8f5099de9e76234655ae48cfdbe2c3"}, + {file = "coverage-6.4-cp39-cp39-win_amd64.whl", hash = "sha256:e35217031e4b534b09f9b9a5841b9344a30a6357627761d4218818b865d45055"}, + {file = "coverage-6.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:e637ae0b7b481905358624ef2e81d7fb0b1af55f5ff99f9ba05442a444b11e45"}, + {file = "coverage-6.4.tar.gz", hash = "sha256:727dafd7f67a6e1cad808dc884bd9c5a2f6ef1f8f6d2f22b37b96cb0080d4f49"}, ] cryptography = [ {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, @@ -1797,13 +2239,63 @@ cryptography = [ {file = "cryptography-37.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452"}, {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, ] +cycler = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] +cython = [ + {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5cb144728a335d7a7fd0a61dff6abb7a9aeff9acd46d50b886b7d9a95bb7311"}, + {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d52d5733dcb144deca8985f0a197c19cf71e6bd6bd9d8034f3f67b2dea68d12b"}, + {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0cd6c932e945af15ae4ddcf8fdc0532bda48784c92ed0a53cf4fae897067ccd1"}, + {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a30092c6e2d24255fbfe0525f9a750554f96a263ed986d12ac3c9f7d9a85a424"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:abcaf99f90cddc0f53600613eaafc81d27c4ac0671f0df8bce5466d4e86d54a1"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9826981308802c61a76f967875b31b7c683b7fc369eabaa6cbc22efeb12c90e8"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d166d9f853db436f5e10733a9bd615699ddb4238feadcbdf5ae50dc0b18b18f5"}, + {file = "Cython-0.29.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0b83a342a071c4f14e7410568e0c0bd95e2f20c0b32944e3a721649a1357fda4"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ffa8c09617833ff0824aa7926fa4fa9d2ec3929c67168e89105f276b7f36a63e"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6b389a94b42909ff56d3491fde7c44802053a103701a7d210dcdd449a5b4f7b4"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:7eff71c39b98078deaad1d1bdbf10864d234e2ab5d5257e980a6926a8523f697"}, + {file = "Cython-0.29.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8e08f18d249b9b65e272a5a60f3360a8922c4c149036b98fc821fe1afad5bdae"}, + {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3993aafd68a7311ef94e00e44a137f6a50a69af0575ebcc8a0a074ad4152a2b2"}, + {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5c7cfd908efc77306ddd41ef07f5a7a352c9205ced5c1e00a0e5ece4391707c4"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e605635a92ae862cb46d84d1d6883324518f9aaff4a71cede6d61df20b6a410c"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:786ee7b0cdb508b6de64c0f1f9c74f207186dfafad1ef938f25b7494cc481a80"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:1e078943bbde703ca08d43e719480eb8b187d9023cbd91798619f5b5e18d0d71"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5183356c756b56c2df12d96300d602e47ffb89943c5a0bded66faca5d3da7be0"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e36755e71fd20eceb410cc441b7f2586654c2edb013f4663842fdaf60b96c1ca"}, + {file = "Cython-0.29.30-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e29d3487f357108b711f2f29319811d92166643d29aec1b8e063aad46a346775"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5a8a3709ad9343a1dc02b8ec9cf6bb284be248d2c64af85464d9c3525eec74a5"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b17639b6a155abaa61a89f6f1323fb57b138d0529911ca03978d594945d062ba"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:9462e9cf284d9b1d2c5b53d62188e3c09cc5c7a0018ba349d99b73cf930238de"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:58d2b734250c1093bc69c1c3a6f5736493b9f8b34eb765f0a28a4a09468c0b00"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28db751e2d8365b39664d9cb62dc1668688b8fcc5b954e9ca9d20e0b8e03d8b0"}, + {file = "Cython-0.29.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f2dae7dd56860018d5fd5032a71f11fdc224020932b463d0511a1536f27df85"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d0859a958e0155b6ae4dee04170ccfac2c3d613a7e3bee8749614530b9e3b4a4"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d0f34b44078e3e0b2f1be2b99044619b37127128e7d55c54bbd2438adcaf31d3"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:80a7255ad84620f53235c0720cdee2bc7431d9e3db7b3742823a606c329eb539"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0239c7a22a0f3fb1deec75cab0078eba4dd17868aa992a54a178851e0c8684"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c299c5b250ae9f81c38200441b6f1d023aeee9d8e7f61c04001c7437181ccb06"}, + {file = "Cython-0.29.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:019d330ac580b2ca4a457c464ac0b8c35009d820ef5d09f328d6e31a10e1ce89"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:71fd1d910aced510c001936667fc7f2901c49b2ca7a2ad67358979c94a7f42ac"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:60d370c33d56077d30e5f425026e58c2559e93b4784106f61581cf54071f6270"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:20778297c8bcba201ca122a2f792a9899d6e64c68a92363dd7eb24306d54d7ce"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f1fe924c920b699af27aefebd722df4cfbb85206291623cd37d1a7ddfd57792"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c79685dd4631a188e2385dc6a232896c7b67ea2e3e5f8b5555b4b743f475d6d7"}, + {file = "Cython-0.29.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:88c5e2f92f16cd999ddfc43d572639679e8a057587088e627e98118e46a803e6"}, + {file = "Cython-0.29.30-py2.py3-none-any.whl", hash = "sha256:acb72e0b42079862cf2f894964b41f261e941e75677e902c5f4304b3eb00af33"}, + {file = "Cython-0.29.30.tar.gz", hash = "sha256:2235b62da8fe6fa8b99422c8e583f2fb95e143867d337b5c75e4b9a1a865f9e3"}, +] dataclasses-json = [ {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, ] +decorator = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] dill = [ - {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, - {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, ] distlib = [ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, @@ -1818,8 +2310,12 @@ fastapi = [ {file = "fastapi-0.76.0.tar.gz", hash = "sha256:a5f99f6e827c7108a8efaf1d7f19d6cf2d735ad984f5e44d33ccec6ee88a7da1"}, ] filelock = [ - {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, - {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, + {file = "filelock-3.7.0-py3-none-any.whl", hash = "sha256:c7b5fdb219b398a5b28c8e4c1893ef5f98ece6a38c6ab2c22e26ec161556fed6"}, + {file = "filelock-3.7.0.tar.gz", hash = "sha256:b795f1b42a61bbf8ec7113c341dad679d772567b936fbd1bf43c9a238e673e20"}, +] +fonttools = [ + {file = "fonttools-4.33.3-py3-none-any.whl", hash = "sha256:f829c579a8678fa939a1d9e9894d01941db869de44390adb49ce67055a06cc2a"}, + {file = "fonttools-4.33.3.zip", hash = "sha256:c0fdcfa8ceebd7c1b2021240bd46ef77aa8e7408cf10434be55df52384865f8e"}, ] frozenlist = [ {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, @@ -1885,6 +2381,46 @@ frozenlist = [ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] +glcontext = [ + {file = "glcontext-2.3.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2eb3c2d7879076a33e801283ab2403788b78e1a45dc89e664a3100b967d471a1"}, + {file = "glcontext-2.3.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:86441e63363dcbb97ee813c9978c1d8998563e76b3726776da04b7be49813be3"}, + {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e613a52a32b9fd5a528981c94b39078064a96380cad91ade4c312340d5404af"}, + {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ba701c46e7b774857b756ac6af15487b917a29dce195e40d834638edaad6f4"}, + {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861304731c2fa5413e24abc32ac8335e93cf9f8dc7ab767ea69d380d8d503b1b"}, + {file = "glcontext-2.3.6-cp310-cp310-win32.whl", hash = "sha256:cb5b67ffc75ff4a358e8f739d3c65e1bbcc9e75c651dd5945c787d7b9c3ad03f"}, + {file = "glcontext-2.3.6-cp310-cp310-win_amd64.whl", hash = "sha256:032d10008de005b51a2401820356e9f7d51bc9c2a28f8194cc1c345bf1a8a3f9"}, + {file = "glcontext-2.3.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:16bde9cf3bae7129f5308be4a1143db58e68b49b10c77e4e34f9a51cf98fd557"}, + {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25a94ddd93eef639fd0a377b7ebc1ac972978796a2ada74fd5b03b88719d88a"}, + {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a800ba7fd1912f6424bd5979ba596f08308a9e949da73aba942b0a535860170"}, + {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bcb5b2ddd21d37f8a1b2aaa62e3952e54a09bc31d29b861a4dcc57a536514f0"}, + {file = "glcontext-2.3.6-cp37-cp37m-win32.whl", hash = "sha256:e646d9c5af3b583f74a586fd151b787314352116e7c06c4902da93e15082bdb4"}, + {file = "glcontext-2.3.6-cp37-cp37m-win_amd64.whl", hash = "sha256:2ac6f80440510473621d287603ef69a08b985c06619f62f42cb485e5ca6e872c"}, + {file = "glcontext-2.3.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b6030d9deedba125d95d39abd72c36fbf6f0a7f866e600f22b210e368afbf522"}, + {file = "glcontext-2.3.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8ca64b73e16712537a95d2e848a13391f83d72f5c19bde5f05562b62b2a1fee6"}, + {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226453bb7ff5a79e88c59ae38b60d1ce002fa2196b19aa8fada147221816e78c"}, + {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48f299b77612b9c80f026204ee3a3062b56cb0776c1d25a6b5ce05fb7e18b261"}, + {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81addba70acbc3fa84ace2b53509c89ff3c7bfe068d1ba2d7d3478140aed2838"}, + {file = "glcontext-2.3.6-cp38-cp38-win32.whl", hash = "sha256:233a9a977d545acf7d2ea1065c986fe6b711948f31499ce5e49e5366eefafa08"}, + {file = "glcontext-2.3.6-cp38-cp38-win_amd64.whl", hash = "sha256:7f114582574c8013fdec09154767b2c3f87875b74ff9938b20d3265971d08971"}, + {file = "glcontext-2.3.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8adc530ecbb0c01c0abcc56ee71c7bcf8799209bff9e5c32f1a1d77f7035468"}, + {file = "glcontext-2.3.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:01106836f02d0098cbcacbc6d0c911f27fa728177d5a651ff44325dfafba7077"}, + {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3f573bde2183943f6161aeb81cad14a2978f143c686dd52253a38cdae7e7667"}, + {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60a982fc78b4400d3b5075f9790977c4d2bdf99824af3cd0428ae5a54437635f"}, + {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64c0425155174fd2faaff7f631d41792365e357484c7f44a6b38efc1ea38468c"}, + {file = "glcontext-2.3.6-cp39-cp39-win32.whl", hash = "sha256:8789947abf3594a11655f23be88481dae0a660bbf8f42e2a5fa95a8fce59ba2c"}, + {file = "glcontext-2.3.6-cp39-cp39-win_amd64.whl", hash = "sha256:22699f81696756ec98fcf8b9a2ebd1dd73a42f81501d7748855e66b63d963c36"}, + {file = "glcontext-2.3.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:970a2769c6aed12e29bd1edbb30a04fa17871a6cf7bb95190e65302c693ce928"}, + {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a30c62c6168b42a32083dc8c967e421f8c346e4452a00809c056ce6c6bea0c4"}, + {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e531662f37d171c08fcdc4ca442468266bef77da14c72c183bcaa2cd80111386"}, + {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5dfc4629ed85e51176fc1d8563944e0439b77bc6fe2365cb42207838ea32f"}, + {file = "glcontext-2.3.6-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:41a69166c20b1a67b2652a5074a78078df7e19f36c65d92f6552535a1182d4cc"}, + {file = "glcontext-2.3.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8b118f0361e61e21279e414a1fa759288421ac311e44ce08e718de38f788183"}, + {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4f862f2b4426f1786743448c899d225e8383538602a04c3ffc9622956d08140"}, + {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e59f5afe61c5bc18dc7766c36a0ac912794a53605b30469c6c6be20483f4b42f"}, + {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d399cba251b301d94eb7a41017ba68e001673f642606229fba7a0d4183b3273"}, + {file = "glcontext-2.3.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bd50f826bb70df2415c7166d5e0aebdda3e47df8af385f562d8d5ba6018f87e9"}, + {file = "glcontext-2.3.6.tar.gz", hash = "sha256:cdb540eec587deddca037fb4dfdaa0921dcab0fd4d7ea5f1079e44fcb1b81e67"}, +] greenlet = [ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, @@ -1947,12 +2483,12 @@ h11 = [ {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hypothesis = [ - {file = "hypothesis-6.46.2-py3-none-any.whl", hash = "sha256:37ca37f61939d0a92c18b5e17ab8088dccc5fc077c913d6619bbe1d233dfca1e"}, - {file = "hypothesis-6.46.2.tar.gz", hash = "sha256:c671b3801527f3a8189314d9385418a67d4c7ab1b3330a3ff8b267d0d4599b3d"}, + {file = "hypothesis-6.46.9-py3-none-any.whl", hash = "sha256:5a9629e10700e5c93f761fa310baf127f36f8a9e179e7dae087aeb22b3d1f535"}, + {file = "hypothesis-6.46.9.tar.gz", hash = "sha256:8b1349dab58cf9bc85687e2721c008e99f23a32fb70e688779c81b0298904160"}, ] identify = [ - {file = "identify-2.5.0-py2.py3-none-any.whl", hash = "sha256:3acfe15a96e4272b4ec5662ee3e231ceba976ef63fd9980ed2ce9cc415df393f"}, - {file = "identify-2.5.0.tar.gz", hash = "sha256:c83af514ea50bf2be2c4a3f2fb349442b59dc87284558ae9ff54191bff3541d2"}, + {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, + {file = "identify-2.5.1.tar.gz", hash = "sha256:3d11b16f3fe19f52039fb7e39c9c884b21cb1b586988114fbe42671f03de3e82"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -1962,59 +2498,59 @@ idna-ssl = [ {file = "idna-ssl-1.1.0.tar.gz", hash = "sha256:a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c"}, ] immutables = [ - {file = "immutables-0.17-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cab10d65a29b2019fffd7a3924f6965a8f785e7bd409641ce36ab2d3335f88c4"}, - {file = "immutables-0.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f73088c9b8595ddfd45a5658f8cce0cb3ae6e5890458381fccba3ed3035081d4"}, - {file = "immutables-0.17-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef632832fa1acae6861d83572b866126f9e35706ab6e581ce6b175b3e0b7a3c4"}, - {file = "immutables-0.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0efdcec7b63859b41f794ffa0cd0d6dc87e77d1be4ff0ec23471a3a1e719235f"}, - {file = "immutables-0.17-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eca96f12bc1535657d24eae2c69816d0b22c4a4bc7f4753115e028a137e8dad"}, - {file = "immutables-0.17-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:01a25b1056754aa486afea5471ca348410d77f458477ccb6fa3baf2d3e3ff3d5"}, - {file = "immutables-0.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c41a6648f7355f1241da677c418edae56fdc45af19ad3540ca8a1e7a81606a7a"}, - {file = "immutables-0.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0b578bba11bd8ae55dee9536edf8d82be18463d15d4b4c9827e27eeeb73826bf"}, - {file = "immutables-0.17-cp310-cp310-win32.whl", hash = "sha256:a28682e115191e909673aedb9ccea3377da3a6a929f8bd86982a2a76bdfa89db"}, - {file = "immutables-0.17-cp310-cp310-win_amd64.whl", hash = "sha256:293ddb681502945f29b3065e688a962e191e752320040892316b9dd1e3b9c8c9"}, - {file = "immutables-0.17-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ec04fc7d9f76f26d82a5d9d1715df0409d0096309828fc46cd1a2067c7fbab95"}, - {file = "immutables-0.17-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f024f25e9fda42251a2b2167668ca70678c19fb3ab6ed509cef0b4b431d0ff73"}, - {file = "immutables-0.17-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b02083b2052cc201ac5cbd38f34a5da21fcd51016cb4ddd1fb43d7dc113eac17"}, - {file = "immutables-0.17-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea32db31afb82d8369e98f85c5b815ff81610a12fbc837830a34388f1b56f080"}, - {file = "immutables-0.17-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:898a9472d1dd3d17f291114395a1be65be035355fc65af0b2c88238f8fbeaa62"}, - {file = "immutables-0.17-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:736dd3d88d44da0ee48804792bd095c01a344c5d1b0f10beeb9ccb3a00b9c19d"}, - {file = "immutables-0.17-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:15ff4139720f79b902f435a25e3c00f9c8adcc41d79bed64b7e51ae36cfe9620"}, - {file = "immutables-0.17-cp36-cp36m-win32.whl", hash = "sha256:4f018a6c4c3689b82f763ad4f84dec6aa91c83981db7f6bafef963f036e5e815"}, - {file = "immutables-0.17-cp36-cp36m-win_amd64.whl", hash = "sha256:d7400a6753b292ac80102ed026efa8da2c3fedd50c443924cbe9b6448d3b19e4"}, - {file = "immutables-0.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f7a6e0380bddb99c46bb3f12ae5eee9a23d6a66d99bbf0fb10fa552f935c2e8d"}, - {file = "immutables-0.17-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7696c42d1f9a16ecda0ee46229848df8706973690b45e8a090d995d647a5ec57"}, - {file = "immutables-0.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:892b6a1619cd8c398fa70302c4cfa9768a694377639330e7a58cc7be111ab23e"}, - {file = "immutables-0.17-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89093d5a85357250b1d5ae218fdcfdbac4097cbb2d8b55004aa7a2ca2a00a09f"}, - {file = "immutables-0.17-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99a8bc6d0623300eb46beea74f7a5061968fb3efc4e072f23f6c0b21c588238d"}, - {file = "immutables-0.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:00380474f8e3b4a2eeb06ce694e0e3cb85a144919140a2b3116defb6c1587471"}, - {file = "immutables-0.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:078e3ed63be0ac36523b80bbabbfb1bb57e55009f4efb5650b0e3b3ed569c3f1"}, - {file = "immutables-0.17-cp37-cp37m-win32.whl", hash = "sha256:14905aecc62b318d86045dcf8d35ef2063803d9d331aeccd88958f03caadc7b0"}, - {file = "immutables-0.17-cp37-cp37m-win_amd64.whl", hash = "sha256:3774d403d1570105a1da2e00c38ce3f04065fd1deff04cf998f8d8e946d0ae13"}, - {file = "immutables-0.17-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e5a9caee1b99eccf1447056ae6bda77edd15c357421293e81fa1a4f28e83448a"}, - {file = "immutables-0.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fed1e1baf1de1bc94a0310da29814892064928d7d40ff5a3b86bcd11d5e7cfff"}, - {file = "immutables-0.17-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d7daa340d76747ba5a8f64816b48def74bd4be45a9508073b34fa954d099fba"}, - {file = "immutables-0.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4644c29fe07fb92ba84b26659708e1799fecaaf781214adf13edd8a4d7495a9"}, - {file = "immutables-0.17-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e9ea0e2a31db44fb01617ff875d4c26f962696e1c5ff11ed7767c2d8dedac4"}, - {file = "immutables-0.17-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:64100dfdb29fae2bc84748fff5d66dd6b3997806c717eeb75f7099aeee9b1878"}, - {file = "immutables-0.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5f933e5bf6f2c1afb24bc2fc8bea8b132096a4a6ba54f36be59787981f3e50ff"}, - {file = "immutables-0.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9508a087a47f9f9506adf2fa8383ab14c46a222b57eea8612bc4c2aa9a9550fe"}, - {file = "immutables-0.17-cp38-cp38-win32.whl", hash = "sha256:dfd2c63f15d1e5ea1ed2a05b7c602b5f61a64337415d299df20e103a57ae4906"}, - {file = "immutables-0.17-cp38-cp38-win_amd64.whl", hash = "sha256:301c539660c988c5b24051ccad1e36c040a916f1e58fa3e245e3122fc50dd28d"}, - {file = "immutables-0.17-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:563bc2ddbe75c10faa3b4b0206870653b44a231b97ed23cff8ab8aff503d922d"}, - {file = "immutables-0.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f621ea6130393cd14d0fbd35b306d4dc70bcd0fda550a8cd313db8015e34ca60"}, - {file = "immutables-0.17-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57c2d1b16b716bca70345db334dd6a861bf45c46cb11bb1801277f8a9012e864"}, - {file = "immutables-0.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a08e1a80bd8c5df72c2bf0af24a37ceec17e8ffdb850ed5a62d0bba1d4d86018"}, - {file = "immutables-0.17-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b99155ad112149d43208c611c6c42f19e16716526dacc0fcc16736d2f5d2e20"}, - {file = "immutables-0.17-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ed71e736f8fb82545d00c8969dbc167547c15e85729058edbed3c03b94fca86c"}, - {file = "immutables-0.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:19e4b8e5810dd7cab63fa700373f787a369d992166eabc23f4b962e5704d33c5"}, - {file = "immutables-0.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:305062012497d4c4a70fe35e20cef2c6f65744e721b04671092a63354799988d"}, - {file = "immutables-0.17-cp39-cp39-win32.whl", hash = "sha256:f5c6bd012384a8d6af7bb25675719214d76640fe6c336e2b5fba9eef1407ae6a"}, - {file = "immutables-0.17-cp39-cp39-win_amd64.whl", hash = "sha256:615ab26873a794559ccaf4e0e9afdb5aefad0867c15262ba64a55a12a5a41573"}, - {file = "immutables-0.17.tar.gz", hash = "sha256:ad894446355b6f5289a9c84fb46f7c47c6ef2b1bfbdd2be6cb177dbb7f1587ad"}, + {file = "immutables-0.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d841dfa15b932bdad27f5149bce86b32d0dd8a29679ed61405677317b6893447"}, + {file = "immutables-0.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29a5886845cd0ca8263b721337750a895e28feee2f16694a526977a791909db5"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e979a9225507e3cd830ea73ac68b69fe82f495313a891485800daa5b6567e05"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9949f704b80d0e601587d0a3b1a0cc6ff5d49528f6dfc1c8a1476b2137bb925e"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b6c820c9bb5aac62b76de703384bb8bb706108be90c3def4a7f047f185a92bb"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:03696193b276db3a9b619629685198886ddd7c4098c544bd8d0f87532c74120b"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:798b4d6c388116effa7523591e4e39865292e4fa74e169b05a0759a16f604ce1"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b3621256bc8058a7973f736b9e2c940e17133476265a0a83b8df8c0f446ca32f"}, + {file = "immutables-0.18-cp310-cp310-win32.whl", hash = "sha256:98f67bd36532582751dcc9021fdb60e7efc82e5717ae5927b84d0b86ea58fe12"}, + {file = "immutables-0.18-cp310-cp310-win_amd64.whl", hash = "sha256:69352b45a115808219feaf0bb7a551e9aa76c72684db93cd03f11474165f4569"}, + {file = "immutables-0.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ee2d6f8816fce53fa89b6a1ba2d4a96b344bf584d6ed0b10a871b17fff46e49"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13159cedb698fdd243d9f2a7469c1628e075a180fc02f865dd98322b92a14aaf"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d72527fde329e3b566b67c954237be52b07d6e84ff23dcc1e94499755cacff6"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53fccddd28cc3214aa48ca564702311c07eac069190dd890e097802c5d69b33a"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a29e3aa0fe05fb2cc6b31039f448aa6206d7f0cdb660c98aa9be6d12070d6840"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ffced8535cc673fcfb411d28ba5744689a6978fa596c803725a76f43c1bda911"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9f17407491164beb689d426f7985f79ae9dfa69868653cfbdb95645f6bf05cb0"}, + {file = "immutables-0.18-cp36-cp36m-win32.whl", hash = "sha256:74456c579cfd53f883cdcc0700e3871648a3316767efc1adf8c723ad3d8addec"}, + {file = "immutables-0.18-cp36-cp36m-win_amd64.whl", hash = "sha256:e4c2110173649acf67bd763bbd2a9c3a863a1d20fd7f3db3493ce4e0fb04fae5"}, + {file = "immutables-0.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa5292630b08c874972931bac06ee381cb6fb7382d7be1856234d7bd4a8e676"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc830a689a55e404f0e23d7d69e01c218fa8a0be54a6ca5df45b6fbfeeac648a"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5caf9c670e6851e7f310716c7dcdf8705236d13056eda1fab3deaad5d7198468"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:853d63f4a07b2ea2131ba0831aeec11f6a6ee5e290e8f175bf56842762d7412e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9a86dcca4bb406f80e7a18c233aec0e76a7530c456e24aa1e19a708a34f2aac1"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6baf4dc11ba0e9f41a6cbde7ecaa7af9cb482559b92ba3254e3e37a518b1970e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:734ec4467dd15f9135ca5ecccc91e796a67d27c227e81554f9e06b1bb3b28d6d"}, + {file = "immutables-0.18-cp37-cp37m-win32.whl", hash = "sha256:f6edb73619aa0a5fe4a77d97dd9d39bfeef61a5afe71aa5bdceccf59b933999e"}, + {file = "immutables-0.18-cp37-cp37m-win_amd64.whl", hash = "sha256:fade8ccf7afbc1e7ea353159fa90cc04395f2f4f57658160d7a02f6aa60c4e77"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8b650d779a46441dccd02e7ee8326dbd0dec633c6bd75e9fe13373a6b19570dd"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1acbbc333f1643fd1ed21bcc3e09aad2ef6648478a0cae76a2ca5823764a7d3b"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3bad4d43009fa61ea40d887e6fa89ae7c4e62dff5e4a878d60b76cf245720bb"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e04b61ddffd4ccb4d7ab823b2e55dbb4ad47c37697e311fae4b98b3c023ab194"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54577e46c5332d7390212040c084335b7d667504847ed2788428d44f20e595ce"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1330f96eb6a3a11f5d02f30b2c6393ef30d01a79f7144d63d2a3e6ff05cb99db"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1d6821d7718cf9f4a7b1d9e765fc22a9d1ae0fad3fabd8724b4e614d2a6e0b54"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45bd862a5dfb952eaff4a9c2448712c5a550dd956575e23cbfc512010fb06c74"}, + {file = "immutables-0.18-cp38-cp38-win32.whl", hash = "sha256:989606e440492736112b471dcd80586e3d4a63bc6f8ff4f9d1d612e0f96cb683"}, + {file = "immutables-0.18-cp38-cp38-win_amd64.whl", hash = "sha256:ac9e05f846392e983fb59f74ed2334031b366251d16d24122e4c85f70fb6e2da"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:de1a091ab89b7ba50501a915a0fbdceb52b079c752f4f7c76d2060237774a714"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d43b16b6adbe1327c6688e14b125cb3b940e748790b305de96c8d55668ac25f"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f32b5933393e4cc204d8f9e7d9f503ec052e30f612090be0de0dd31b1464b35"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525fe9001b5a96c325eec41677efaeb8c3610776e834ce7f31fbe3d33cc05252"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11da4946e19f3b24a873b2ba2891cc226a89bb398561c62dfb966a9b6501a4a"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:90da9dea0a1c0a907d511f124cd87fe090c0e30a951c3fe68bc9782ae4f2c77f"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77bdc96dc24e32839557cde3785f8039a369c95529ff9179044b81d0ba4bd02c"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:210efea163a704597cfdb2d30713d3c0963c30f0d997539c9ab5da40e3d6a886"}, + {file = "immutables-0.18-cp39-cp39-win32.whl", hash = "sha256:535616ad7ca1174a27ade637192c970bfedb0b0e0467e69ce415b40d7cf7ba0c"}, + {file = "immutables-0.18-cp39-cp39-win_amd64.whl", hash = "sha256:1338aad6fd69f11442adcbb3402a028c90f6e945682ddb8aba462a3827f2d427"}, + {file = "immutables-0.18.tar.gz", hash = "sha256:5336c7974084cce62f7e29aaff81a3c3f75e0fd0a23a2faeb986ae0ea08d8cf4"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, - {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, ] importlib-resources = [ {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, @@ -2028,6 +2564,59 @@ isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] +isosurfaces = [ + {file = "isosurfaces-0.1.0-py3-none-any.whl", hash = "sha256:a3421f7e7115f72f8f1af538ac4723e5570b1aaa0ddfc6a86520d2d781f3e91f"}, + {file = "isosurfaces-0.1.0.tar.gz", hash = "sha256:fa1b44e5e59d2f429add49289ab89e36f8dcda49b7badd99e0beea273be331f4"}, +] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +kiwisolver = [ + {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e395ece147f0692ca7cdb05a028d31b83b72c369f7b4a2c1798f4b96af1e3d8"}, + {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b7f50a1a25361da3440f07c58cd1d79957c2244209e4f166990e770256b6b0b"}, + {file = "kiwisolver-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c032c41ae4c3a321b43a3650e6ecc7406b99ff3e5279f24c9b310f41bc98479"}, + {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dcade8f6fe12a2bb4efe2cbe22116556e3b6899728d3b2a0d3b367db323eacc"}, + {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e45e780a74416ef2f173189ef4387e44b5494f45e290bcb1f03735faa6779bf"}, + {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d2bb56309fb75a811d81ed55fbe2208aa77a3a09ff5f546ca95e7bb5fac6eff"}, + {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b2d6c12f2ad5f55104a36a356192cfb680c049fe5e7c1f6620fc37f119cdc2"}, + {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:262c248c60f22c2b547683ad521e8a3db5909c71f679b93876921549107a0c24"}, + {file = "kiwisolver-1.4.2-cp310-cp310-win32.whl", hash = "sha256:1008346a7741620ab9cc6c96e8ad9b46f7a74ce839dbb8805ddf6b119d5fc6c2"}, + {file = "kiwisolver-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:6ece2e12e4b57bc5646b354f436416cd2a6f090c1dadcd92b0ca4542190d7190"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b978afdb913ca953cf128d57181da2e8798e8b6153be866ae2a9c446c6162f40"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f88c4b8e449908eeddb3bbd4242bd4dc2c7a15a7aa44bb33df893203f02dc2d"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e348f1904a4fab4153407f7ccc27e43b2a139752e8acf12e6640ba683093dd96"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c839bf28e45d7ddad4ae8f986928dbf5a6d42ff79760d54ec8ada8fb263e097c"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ae5a071185f1a93777c79a9a1e67ac46544d4607f18d07131eece08d415083a"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c222f91a45da9e01a9bc4f760727ae49050f8e8345c4ff6525495f7a164c8973"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:a4e8f072db1d6fb7a7cc05a6dbef8442c93001f4bb604f1081d8c2db3ca97159"}, + {file = "kiwisolver-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:be9a650890fb60393e60aacb65878c4a38bb334720aa5ecb1c13d0dac54dd73b"}, + {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ec2e55bf31b43aabe32089125dca3b46fdfe9f50afbf0756ae11e14c97b80ca"}, + {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d1078ba770d6165abed3d9a1be1f9e79b61515de1dd00d942fa53bba79f01ae"}, + {file = "kiwisolver-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbb5eb4a2ea1ffec26268d49766cafa8f957fe5c1b41ad00733763fae77f9436"}, + {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e6cda72db409eefad6b021e8a4f964965a629f577812afc7860c69df7bdb84a"}, + {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1605c7c38cc6a85212dfd6a641f3905a33412e49f7c003f35f9ac6d71f67720"}, + {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81237957b15469ea9151ec8ca08ce05656090ffabc476a752ef5ad7e2644c526"}, + {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:240009fdf4fa87844f805e23f48995537a8cb8f8c361e35fda6b5ac97fcb906f"}, + {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:240c2d51d098395c012ddbcb9bd7b3ba5de412a1d11840698859f51d0e643c4f"}, + {file = "kiwisolver-1.4.2-cp38-cp38-win32.whl", hash = "sha256:8b6086aa6936865962b2cee0e7aaecf01ab6778ce099288354a7229b4d9f1408"}, + {file = "kiwisolver-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:0d98dca86f77b851350c250f0149aa5852b36572514d20feeadd3c6b1efe38d0"}, + {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:91eb4916271655dfe3a952249cb37a5c00b6ba68b4417ee15af9ba549b5ba61d"}, + {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa4d97d7d2b2c082e67907c0b8d9f31b85aa5d3ba0d33096b7116f03f8061261"}, + {file = "kiwisolver-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71469b5845b9876b8d3d252e201bef6f47bf7456804d2fbe9a1d6e19e78a1e65"}, + {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8ff3033e43e7ca1389ee59fb7ecb8303abb8713c008a1da49b00869e92e3dd7c"}, + {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89b57c2984f4464840e4b768affeff6b6809c6150d1166938ade3e22fbe22db8"}, + {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffbdb9a96c536f0405895b5e21ee39ec579cb0ed97bdbd169ae2b55f41d73219"}, + {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a830a03970c462d1a2311c90e05679da56d3bd8e78a4ba9985cb78ef7836c9f"}, + {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f74f2a13af201559e3d32b9ddfc303c94ae63d63d7f4326d06ce6fe67e7a8255"}, + {file = "kiwisolver-1.4.2-cp39-cp39-win32.whl", hash = "sha256:e677cc3626287f343de751e11b1e8a5b915a6ac897e8aecdbc996cd34de753a0"}, + {file = "kiwisolver-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b3e251e5c38ac623c5d786adb21477f018712f8c6fa54781bd38aa1c60b60fc2"}, + {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c380bb5ae20d829c1a5473cfcae64267b73aaa4060adc091f6df1743784aae0"}, + {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:484f2a5f0307bc944bc79db235f41048bae4106ffa764168a068d88b644b305d"}, + {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8afdf533b613122e4bbaf3c1e42c2a5e9e2d1dd3a0a017749a7658757cb377"}, + {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42f6ef9b640deb6f7d438e0a371aedd8bef6ddfde30683491b2e6f568b4e884e"}, + {file = "kiwisolver-1.4.2.tar.gz", hash = "sha256:7f606d91b8a8816be476513a77fd30abe66227039bd6f8b406c348cb0247dcc9"}, +] lazy-object-proxy = [ {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, @@ -2083,6 +2672,57 @@ mando = [ {file = "mando-0.6.4-py2.py3-none-any.whl", hash = "sha256:4ce09faec7e5192ffc3c57830e26acba0fd6cd11e1ee81af0d4df0657463bd1c"}, {file = "mando-0.6.4.tar.gz", hash = "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960"}, ] +manim = [ + {file = "manim-0.15.2-py3-none-any.whl", hash = "sha256:79d1a052cf498e18367c48443d2d8f578a0cddad6eded62eaaf8a970f8991e53"}, + {file = "manim-0.15.2.tar.gz", hash = "sha256:ba851ac5e877214c4aae97f28bffe483efe97cb68159480897e13e0b9e9a86a4"}, +] +manimpango = [ + {file = "ManimPango-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc70c1ae3bb853b7244ea2c9b50c908e9d7a93062ec68315872e38771cc66969"}, + {file = "ManimPango-0.4.1-cp310-cp310-win32.whl", hash = "sha256:5228e5326dc52753f4e6855ac4bf9667d78c0005315cddaf74fac5c2a6f87bc3"}, + {file = "ManimPango-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:a83da66451498d6cc3f6e637157ca6c7530b68f9bc0ac6fe043b04bf78c87073"}, + {file = "ManimPango-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb84060069e35bbc220cc9a19658f3e694019a98cee2154fee1171a47bf3db44"}, + {file = "ManimPango-0.4.1-cp37-cp37m-win32.whl", hash = "sha256:02eee359b971d8f900ecb4de0e0023abe1aaec8f5e1c39c663a99a4e2b4425b0"}, + {file = "ManimPango-0.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c59cadd9ed02c0d748fcf294ddb7d158c2ba2a50caa96d6af58ee0bcde327d67"}, + {file = "ManimPango-0.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d36b4df474149e958fadcc31a29cefc90ced6240053fa0e9cd3188a5649eca6b"}, + {file = "ManimPango-0.4.1-cp38-cp38-win32.whl", hash = "sha256:5ed7b089681d1379c4250b070b668079e92d69251491ec8e010c083d21a80775"}, + {file = "ManimPango-0.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:7a0e42e17b2caae12bcd68502befa0e879c8503e6d31cd07e8d819b1e2567718"}, + {file = "ManimPango-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2375739e7a65a7f16e5856b392d930410c194066dd44cf6000d5ef2eb3b7d6f3"}, + {file = "ManimPango-0.4.1-cp39-cp39-win32.whl", hash = "sha256:109f2f5298f7a53354871766b21bc3a40e41eba448030fdcdffb970a295ebf28"}, + {file = "ManimPango-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:ca35af36d490000a7155fdb3aae124bcdfe2a167086c95df0aeee92483f1dce1"}, + {file = "ManimPango-0.4.1.tar.gz", hash = "sha256:f2da037ccdfe174040d3315001cc59bfc7405cd1b1191078bd4db0938005d649"}, +] +mapbox-earcut = [ + {file = "mapbox_earcut-0.12.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:421dbfc321871e66afe9264165848c0d13a37b27156f8a42a642bf5820bafdda"}, + {file = "mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3285f55acc7628cec1a61c551a7225b9c78c4f849c39417c768019b4408f8536"}, + {file = "mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1fdbca4b14564e636e5ffb4c83f49c739bacf49ec590db9ca2c25e9642feb490"}, + {file = "mapbox_earcut-0.12.11-cp310-cp310-win32.whl", hash = "sha256:d26621f4ca8eff937d4539d5d0e59142fd6466ea161791640ea17547394ffc18"}, + {file = "mapbox_earcut-0.12.11-cp310-cp310-win_amd64.whl", hash = "sha256:cbcd8c2831a8ce848842b3e710e57db00cfdd3d7753cc67b1cc61d0c7dd91ca8"}, + {file = "mapbox_earcut-0.12.11-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4c4c55711d7877ea4d2f11d1422c46004121a2b1f4aab6c0b587eab2d87b3a6b"}, + {file = "mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4ebf5f1b3cc7ec0f90eb4f9479b8013da46ece2cf69c887fdfdee6bec1169eb6"}, + {file = "mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d438ef905fb3ec6cb1378c5b169888e0f36a7786354a9a2ae8b8d5e75fe5beee"}, + {file = "mapbox_earcut-0.12.11-cp36-cp36m-win32.whl", hash = "sha256:c9d8d4e61ad67ce5aeac7a948b4bb68bd2126d5fceccaaaf33a625b43225ba45"}, + {file = "mapbox_earcut-0.12.11-cp36-cp36m-win_amd64.whl", hash = "sha256:2357cc3402173b9ba601fe1d2abf55a2fc80a969680981e51fce3bd7524aab6f"}, + {file = "mapbox_earcut-0.12.11-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:83d6a8fc39ef55ddb1f47bd49523b11e7cf9f07292356b93ad18c58473282fd4"}, + {file = "mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2eb7b64ee5b003a71fd1108894fd7a579c87919e7cf5da9f865d5e9694934cd5"}, + {file = "mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64ca3752284345416834e591d9029d50dfa06661208f45d8b7e91f58e2610864"}, + {file = "mapbox_earcut-0.12.11-cp37-cp37m-win32.whl", hash = "sha256:8a90b6773db060474bbc1062c972a18f9dc4ea6940a47fb39090e60f821a9239"}, + {file = "mapbox_earcut-0.12.11-cp37-cp37m-win_amd64.whl", hash = "sha256:d90adb110d45198dcfc2b546648bd23b98737a38c6f0dea0e5949aeae3fca3dd"}, + {file = "mapbox_earcut-0.12.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc3e8b1961f53f7bae3c6818ee7114ba0512aa3c0a8fb61818240ecd02fd22e4"}, + {file = "mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a31f96bc080e2f12fd39172baf891c5050bd56e2f60608d45139fd0ce489f08"}, + {file = "mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dc4c69b2953b1267804f34044c483420f902514ab3cdf02fe454b4fd7192e6a2"}, + {file = "mapbox_earcut-0.12.11-cp38-cp38-win32.whl", hash = "sha256:30c2d30a00ad28d03026dba76de870b2e66fe01a7b340f3cb459b65a4c902ee5"}, + {file = "mapbox_earcut-0.12.11-cp38-cp38-win_amd64.whl", hash = "sha256:6e01b9a9bc15d85e7dcbec52148e9851760a67e097eb63e4bc354e551ab4ae6d"}, + {file = "mapbox_earcut-0.12.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f69ac829ce208bcf85d47e0bf6409b79fc81ae7ca390de3ce2c4e971693328d8"}, + {file = "mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4eff01f3dc0f62ad4ea38da0ef16a242d613aa4efa38eb924677d8427de2e20c"}, + {file = "mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:69da117d3716b5e1f052d7ffc93411a8651bb7c8a7cc41c4ed362e07a45eaae6"}, + {file = "mapbox_earcut-0.12.11-cp39-cp39-win32.whl", hash = "sha256:8faaa8239a6c6db67220a1908b232e0d673c4ba5d06e0943fce0e4d9908ca796"}, + {file = "mapbox_earcut-0.12.11-cp39-cp39-win_amd64.whl", hash = "sha256:4c7c297063c2cd3608d42b174303dfb32f3b9252cf115bed06eb3c64875d3458"}, + {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:96783c3f818f0844d9153a45312142b4e1bda9c284eb4828bba1a9e1fbeb268e"}, + {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a39a27a205189476e6404a855652c834a1cef087207131d3515aff7ac06b1a1f"}, + {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:18cd01be27ec85357e2f9ea0bbe7ce2f71d593966568e5cf12a9b7e19bf0e8d1"}, + {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6542cc54b330c876e62dad15e98dd4df18e2fd75ffb5b9c84d0629bd085ea123"}, + {file = "mapbox_earcut-0.12.11.tar.gz", hash = "sha256:2808757f8a95eb816d3ce225528c9cb15355afe175f3bcb6837eb7700972e0b9"}, +] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -2133,10 +2773,110 @@ marshmallow-enum = [ {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, ] +matplotlib = [ + {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:03bbb3f5f78836855e127b5dab228d99551ad0642918ccbf3067fcd52ac7ac5e"}, + {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49a5938ed6ef9dda560f26ea930a2baae11ea99e1c2080c8714341ecfda72a89"}, + {file = "matplotlib-3.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:77157be0fc4469cbfb901270c205e7d8adb3607af23cef8bd11419600647ceed"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5844cea45d804174bf0fac219b4ab50774e504bef477fc10f8f730ce2d623441"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c87973ddec10812bddc6c286b88fdd654a666080fbe846a1f7a3b4ba7b11ab78"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a05f2b37222319753a5d43c0a4fd97ed4ff15ab502113e3f2625c26728040cf"}, + {file = "matplotlib-3.5.2-cp310-cp310-win32.whl", hash = "sha256:9776e1a10636ee5f06ca8efe0122c6de57ffe7e8c843e0fb6e001e9d9256ec95"}, + {file = "matplotlib-3.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:b4fedaa5a9aa9ce14001541812849ed1713112651295fdddd640ea6620e6cf98"}, + {file = "matplotlib-3.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ee175a571e692fc8ae8e41ac353c0e07259113f4cb063b0ec769eff9717e84bb"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e8bda1088b941ead50caabd682601bece983cadb2283cafff56e8fcddbf7d7f"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9480842d5aadb6e754f0b8f4ebeb73065ac8be1855baa93cd082e46e770591e9"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c623b355d605a81c661546af7f24414165a8a2022cddbe7380a31a4170fa2e9"}, + {file = "matplotlib-3.5.2-cp37-cp37m-win32.whl", hash = "sha256:a91426ae910819383d337ba0dc7971c7cefdaa38599868476d94389a329e599b"}, + {file = "matplotlib-3.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c4b82c2ae6d305fcbeb0eb9c93df2602ebd2f174f6e8c8a5d92f9445baa0c1d3"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ebc27ad11df3c1661f4677a7762e57a8a91dd41b466c3605e90717c9a5f90c82"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a32ea6e12e80dedaca2d4795d9ed40f97bfa56e6011e14f31502fdd528b9c89"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a0967d4156adbd0d46db06bc1a877f0370bce28d10206a5071f9ecd6dc60b79"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2b696699386766ef171a259d72b203a3c75d99d03ec383b97fc2054f52e15cf"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f409716119fa39b03da3d9602bd9b41142fab7a0568758cd136cd80b1bf36c8"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b8d3f4e71e26307e8c120b72c16671d70c5cd08ae412355c11254aa8254fb87f"}, + {file = "matplotlib-3.5.2-cp38-cp38-win32.whl", hash = "sha256:b6c63cd01cad0ea8704f1fd586e9dc5777ccedcd42f63cbbaa3eae8dd41172a1"}, + {file = "matplotlib-3.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:75c406c527a3aa07638689586343f4b344fcc7ab1f79c396699eb550cd2b91f7"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4a44cdfdb9d1b2f18b1e7d315eb3843abb097869cd1ef89cfce6a488cd1b5182"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d8e129af95b156b41cb3be0d9a7512cc6d73e2b2109f82108f566dbabdbf377"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:364e6bca34edc10a96aa3b1d7cd76eb2eea19a4097198c1b19e89bee47ed5781"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea75df8e567743207e2b479ba3d8843537be1c146d4b1e3e395319a4e1a77fe9"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44c6436868186564450df8fd2fc20ed9daaef5caad699aa04069e87099f9b5a8"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d7705022df2c42bb02937a2a824f4ec3cca915700dd80dc23916af47ff05f1a"}, + {file = "matplotlib-3.5.2-cp39-cp39-win32.whl", hash = "sha256:ee0b8e586ac07f83bb2950717e66cb305e2859baf6f00a9c39cc576e0ce9629c"}, + {file = "matplotlib-3.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c772264631e5ae61f0bd41313bbe48e1b9bcc95b974033e1118c9caa1a84d5c6"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:751d3815b555dcd6187ad35b21736dc12ce6925fc3fa363bbc6dc0f86f16484f"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:31fbc2af27ebb820763f077ec7adc79b5a031c2f3f7af446bd7909674cd59460"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fa28ca76ac5c2b2d54bc058b3dad8e22ee85d26d1ee1b116a6fd4d2277b6a04"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:24173c23d1bcbaed5bf47b8785d27933a1ac26a5d772200a0f3e0e38f471b001"}, + {file = "matplotlib-3.5.2.tar.gz", hash = "sha256:48cf850ce14fa18067f2d9e0d646763681948487a8080ec0af2686468b4607a2"}, +] mccabe = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +moderngl = [ + {file = "moderngl-5.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:186f8ab2b869c56f677dc87de0577a60790fb9306bd5149cedc433a39e9291e5"}, + {file = "moderngl-5.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:de252103b24a8dc40c7f6e1755e29bc9263c33b92141787b50c7ab0266c74906"}, + {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bcfcec3bc3b9a1ee19e94fa524913fd45c37214ea69301a6911e8e53f966029"}, + {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d76b0fb489a5dc6da591b979f8c471bb5b67409afaa9fe4569bc0abf25221f4"}, + {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:792ffe1ec233ed5fcfb0c14955a7f944d64c0d49713ff8b9c5fa3176d96f05c3"}, + {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:1f9ed0bc0d706124a01be2ad59b5774bb3b023e61dcf39faf7c4c7ef4b9f4f75"}, + {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7c2fce8b7a68f3df9189a19f424478e1d853cfd3e142efd1eb0d4cdf44148d7"}, + {file = "moderngl-5.6.4-cp310-cp310-win32.whl", hash = "sha256:0c6b482f678641e56bd44acecd10eddf74d2cd31e472eff6cca05493cf01e2c9"}, + {file = "moderngl-5.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:28b517fc56c9ab9eb1f5833f7d7b1274d3719b962f95f55ccd8a0f6db884a92b"}, + {file = "moderngl-5.6.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:bc3764d67f037b67051871345a1d0b7a3d2c19cb5c0c0af0a84c532e802d6642"}, + {file = "moderngl-5.6.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:90006d9dfd5333da604a7d26b2a5e70e1a570f291cd745b8bf80e4833d8821b6"}, + {file = "moderngl-5.6.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af44437545380a840dafd09658eb56592831dbd4fb481d320249d0d42c591bae"}, + {file = "moderngl-5.6.4-cp35-cp35m-win32.whl", hash = "sha256:b5023633bcbfbab90be6a6f4edcde75f9c1e244d9acbda94678f3e3fb238b363"}, + {file = "moderngl-5.6.4-cp35-cp35m-win_amd64.whl", hash = "sha256:ffc48fc4deeb525ed33a828d13ca4c12c5af8e5cb0449011f1802e18b5fc3c25"}, + {file = "moderngl-5.6.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:331fd4bce60b10a08eed81a3ed4c70b7c297c38f981fdf3968d03a1c892af247"}, + {file = "moderngl-5.6.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1bd864b5cc2fc1255785e33575cec98fa5ded698503c4f8f3fa9230abeaa3a04"}, + {file = "moderngl-5.6.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b22534529f5bc52c1fe43336787c06d51123ae978fb56e74e47cabd85056c934"}, + {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5151ccf38af80ce8600eac089df1c814eb72aa99c8768307348c1a170104b7e"}, + {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ef57f65c639d12d534dce70e5c08965f0856ac371c669c7586904b8db6453eb"}, + {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0032c07b31bec50b26bba7ee7999e0f697000b31456bfa84391614bb92dba376"}, + {file = "moderngl-5.6.4-cp36-cp36m-win32.whl", hash = "sha256:ee5b1eced39d7f6dc68782c2abf01c1130a40b6d83d333d175ee71adbea7c721"}, + {file = "moderngl-5.6.4-cp36-cp36m-win_amd64.whl", hash = "sha256:52ee915a559762f0e992344961b35e0d241be32f8aa7464494e958f777e0534c"}, + {file = "moderngl-5.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f83f6ab1fafdba2d9c06a7a1c8a4e460689ea1d514146606acc74f14e0831d93"}, + {file = "moderngl-5.6.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c350e06affea9fabc636b2350cf6e58d83ee2e7264527eee0f5d142c167f5463"}, + {file = "moderngl-5.6.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3eb65afc8ec4a1d4a4c48696fb0f4f6cf7a7ada6bef97818d717dbca73c57b11"}, + {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61ec09bb3382d36e5ef3e627e85744b719db1175c3a3fdbadf9acde48eb1aca6"}, + {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b6b30c5a16807d9d2b92f343fcdca8713a88801d8afa985decd302bb6ef7e9"}, + {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5eb217b7726511d2382bfdd56b2a8ff5489aa7d1d73bf4f854343b07df286fa9"}, + {file = "moderngl-5.6.4-cp37-cp37m-win32.whl", hash = "sha256:4fd721eb83e73d34c3f7b5a11aec656fef461b51bbe7503b07ea27370c593cbd"}, + {file = "moderngl-5.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:01c71d94dbd59b5d37ead463991e2998c0924426cffa393b9da2b8334551c998"}, + {file = "moderngl-5.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:46e7e03360eafa77159e0d6142904de0d2e9400254414820bbc2d0ca16b14388"}, + {file = "moderngl-5.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2ec6ecd845f21ba44a08c11521cb71f2a9c2ea2ec189b7ed30d17837d392d70"}, + {file = "moderngl-5.6.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:40f74a2246e5302f93f2d46f76c0d2a26cbed1eb29731674c4052476f1e9c9ea"}, + {file = "moderngl-5.6.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5e158e6881034c7e1d0c583d7c82ff608439606f2359dc6098e4be4fd93cef9d"}, + {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eb8fb5efab2716938308732d16d0caf1a195015d84d73f2b73e3adacd228ba6"}, + {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59907d8855dd3ccf1950e8f43f5a1a7cdd93910d8edf538bf52e62098be22360"}, + {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8037b6934843000d5fecd2b1933d3894687123fc9afdb19af52a9a628971163d"}, + {file = "moderngl-5.6.4-cp38-cp38-win32.whl", hash = "sha256:a28dc741469eeb69549ee85b4ddbf8e9cfca6a2b19ce0406df9fde20f78082c8"}, + {file = "moderngl-5.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:ce87962b91635d857cac4a753c5d5f647d94dc66dcb0f090bb8d758fd226c3e8"}, + {file = "moderngl-5.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d4c56e15a5fb29de0295891ec3b153e2bd8aeada0c0825135aa5851fa481ff28"}, + {file = "moderngl-5.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3fb139bcdd25eae2c546e5788e9d8719f6c4b18a2ba68a9df31699b4ac57d62d"}, + {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9645afaa1704b2628d8a58be0760243d9954a62902283b176ea00a55b54eafe"}, + {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a3aaa15eb4d43b79e06a46945869feb13f325312ad63666ef2b7d3e216e3a09"}, + {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a07531c6b0f3da3058bd8927bc6c75eface98ce1416d8be4072b9b11b314b718"}, + {file = "moderngl-5.6.4-cp39-cp39-win32.whl", hash = "sha256:fc5cc1601a3df8f45f1901c6b9960731e0619d1781b0d036e12341fbf2ef55d3"}, + {file = "moderngl-5.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:1c74b71c9acee9f0e69807a086d76e92f37c1960c3bb1d6a6e2472fd03f7be5b"}, + {file = "moderngl-5.6.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1927a52fd3465c508045a1c4a8ea8c793399830d48458d431936f24f8827f136"}, + {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d04747cc9a96f786d04c8a176d5d2cbb51159efd66287d0e676ac674f53e861"}, + {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9092c50a2bb293be770f6f0ae5f1cb940848bf03682696c473a6d3f2c7710d2"}, + {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571e524fde685e21dbe132f4eb7bb223cfc235dc917a4cf122bc44897be18e89"}, + {file = "moderngl-5.6.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ee02dba4b32d7a165a36c797ce495d71deb085a7e29cfa7f1236fa7ccdfc6160"}, + {file = "moderngl-5.6.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0c02fdd386c45ad5d5053a436da64181a7821a042f6665c4ae415edfbdfe244c"}, + {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e2b40f1e11ee5f251a0d564e6a5d285ff91adf361e84f6912fc10959b92bd83"}, + {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1d5f918dda6dc1ec5465d7105b06c5525041fbc368df5d4636145006ce3d303"}, + {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a6bd0e342388b931954671ccf8300ab36cc7d8c991547581efa6df5628bda8b"}, + {file = "moderngl-5.6.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:890caba3795a0288259d76a2cee014c6ffc00619bef179a8d0a87fd9c16a3729"}, + {file = "moderngl-5.6.4.tar.gz", hash = "sha256:8c6d04559f5e3bf75a18525cd46d213c0f3a8409363718978e6de691bdb551fb"}, +] +moderngl-window = [ + {file = "moderngl-window-2.4.1.tar.gz", hash = "sha256:691de764640b87af3d851257be544e1cafddb9cfa47cb144d0c1f1a0ed0a3936"}, + {file = "moderngl_window-2.4.1-py3-none-any.whl", hash = "sha256:5f2aaa6ae8d8a40fcd877febaf7494229c2bf1ef01d3fa9faa3a342075d4126a"}, +] mongoengine = [ {file = "mongoengine-0.24.1-py3-none-any.whl", hash = "sha256:68878b65bcb3751debcba4342180a180161cdb5f46525027e622ad081dd44fac"}, {file = "mongoengine-0.24.1.tar.gz", hash = "sha256:01baac85f408f5eefb6195c0afeae631e7fc6fab5cb221a7b46646f94227d6da"}, @@ -2209,6 +2949,11 @@ multidict = [ {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] +multipledispatch = [ + {file = "multipledispatch-0.6.0-py2-none-any.whl", hash = "sha256:407e6d8c5fa27075968ba07c4db3ef5f02bea4e871e959570eeb69ee39a6565b"}, + {file = "multipledispatch-0.6.0-py3-none-any.whl", hash = "sha256:a55c512128fb3f7c2efd2533f2550accb93c35f1045242ef74645fc92a2c3cba"}, + {file = "multipledispatch-0.6.0.tar.gz", hash = "sha256:a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea"}, +] mypy = [ {file = "mypy-0.950-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cf9c261958a769a3bd38c3e133801ebcd284ffb734ea12d01457cb09eacf7d7b"}, {file = "mypy-0.950-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b5bd0ffb11b4aba2bb6d31b8643902c48f990cc92fda4e21afac658044f0c0"}, @@ -2238,39 +2983,68 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] +networkx = [ + {file = "networkx-2.8.2-py3-none-any.whl", hash = "sha256:51d6ae63c24dcd33901357688a2ad20d6bcd38f9a4c5307720048d3a8081059c"}, + {file = "networkx-2.8.2.tar.gz", hash = "sha256:ae99c9b0d35e5b4a62cf1cfea01e5b3633d8d02f4a0ead69685b6e7de5b85eab"}, +] nodeenv = [ {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, ] numpy = [ - {file = "numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75"}, - {file = "numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4"}, - {file = "numpy-1.22.3-cp310-cp310-win32.whl", hash = "sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430"}, - {file = "numpy-1.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1"}, - {file = "numpy-1.22.3-cp38-cp38-win32.whl", hash = "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62"}, - {file = "numpy-1.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168"}, - {file = "numpy-1.22.3-cp39-cp39-win32.whl", hash = "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"}, - {file = "numpy-1.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a"}, - {file = "numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f"}, - {file = "numpy-1.22.3.zip", hash = "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, + {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, + {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, + {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, + {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, + {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, + {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, + {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, + {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +pandas = [ + {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be67c782c4f1b1f24c2f16a157e12c2693fd510f8df18e3287c77f33d124ed07"}, + {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5a206afa84ed20e07603f50d22b5f0db3fb556486d8c2462d8bc364831a4b417"}, + {file = "pandas-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0010771bd9223f7afe5f051eb47c4a49534345dfa144f2f5470b27189a4dd3b5"}, + {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3228198333dd13c90b6434ddf61aa6d57deaca98cf7b654f4ad68a2db84f8cfe"}, + {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b79af3a69e5175c6fa7b4e046b21a646c8b74e92c6581a9d825687d92071b51"}, + {file = "pandas-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:5586cc95692564b441f4747c47c8a9746792e87b40a4680a2feb7794defb1ce3"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:061609334a8182ab500a90fe66d46f6f387de62d3a9cb9aa7e62e3146c712167"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b8134651258bce418cb79c71adeff0a44090c98d955f6953168ba16cc285d9f7"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df82739e00bb6daf4bba4479a40f38c718b598a84654cbd8bb498fd6b0aa8c16"}, + {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:385c52e85aaa8ea6a4c600a9b2821181a51f8be0aee3af6f2dcb41dafc4fc1d0"}, + {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295872bf1a09758aba199992c3ecde455f01caf32266d50abc1a073e828a7b9d"}, + {file = "pandas-1.4.2-cp38-cp38-win32.whl", hash = "sha256:95c1e422ced0199cf4a34385ff124b69412c4bc912011ce895582bee620dfcaa"}, + {file = "pandas-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:5c54ea4ef3823108cd4ec7fb27ccba4c3a775e0f83e39c5e17f5094cb17748bc"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c072c7f06b9242c855ed8021ff970c0e8f8b10b35e2640c657d2a541c5950f59"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f549097993744ff8c41b5e8f2f0d3cbfaabe89b4ae32c8c08ead6cc535b80139"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff08a14ef21d94cdf18eef7c569d66f2e24e0bc89350bcd7d243dd804e3b5eb2"}, + {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c5bf555b6b0075294b73965adaafb39cf71c312e38c5935c93d78f41c19828a"}, + {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51649ef604a945f781105a6d2ecf88db7da0f4868ac5d45c51cb66081c4d9c73"}, + {file = "pandas-1.4.2-cp39-cp39-win32.whl", hash = "sha256:d0d4f13e4be7ce89d7057a786023c461dd9370040bdb5efa0a7fe76b556867a0"}, + {file = "pandas-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:09d8be7dd9e1c4c98224c4dfe8abd60d145d934e9fc1f5f411266308ae683e6a"}, + {file = "pandas-1.4.2.tar.gz", hash = "sha256:92bc1fc585f1463ca827b45535957815b7deb218c549b7c18402c322c7549a12"}, +] paramiko = [ - {file = "paramiko-2.10.4-py2.py3-none-any.whl", hash = "sha256:3c9ed6084f4b671ab66dc3c729092d32d96c3258f1426071301cb33654b09027"}, - {file = "paramiko-2.10.4.tar.gz", hash = "sha256:3d2e650b6812ce6d160abff701d6ef4434ec97934b13e95cf1ad3da70ffb5c58"}, + {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, + {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, ] peewee = [ {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, @@ -2299,57 +3073,57 @@ pendulum = [ {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, ] pillow = [ - {file = "Pillow-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea"}, - {file = "Pillow-9.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e"}, - {file = "Pillow-9.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3"}, - {file = "Pillow-9.1.0-cp310-cp310-win32.whl", hash = "sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160"}, - {file = "Pillow-9.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033"}, - {file = "Pillow-9.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2"}, - {file = "Pillow-9.1.0-cp37-cp37m-win32.whl", hash = "sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244"}, - {file = "Pillow-9.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e"}, - {file = "Pillow-9.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5"}, - {file = "Pillow-9.1.0-cp38-cp38-win32.whl", hash = "sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a"}, - {file = "Pillow-9.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331"}, - {file = "Pillow-9.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8"}, - {file = "Pillow-9.1.0-cp39-cp39-win32.whl", hash = "sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58"}, - {file = "Pillow-9.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458"}, - {file = "Pillow-9.1.0.tar.gz", hash = "sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97"}, + {file = "Pillow-9.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:42dfefbef90eb67c10c45a73a9bc1599d4dac920f7dfcbf4ec6b80cb620757fe"}, + {file = "Pillow-9.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffde4c6fabb52891d81606411cbfaf77756e3b561b566efd270b3ed3791fde4e"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c857532c719fb30fafabd2371ce9b7031812ff3889d75273827633bca0c4602"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59789a7d06c742e9d13b883d5e3569188c16acb02eeed2510fd3bfdbc1bd1530"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d45dbe4b21a9679c3e8b3f7f4f42a45a7d3ddff8a4a16109dff0e1da30a35b2"}, + {file = "Pillow-9.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9ed59d1b6ee837f4515b9584f3d26cf0388b742a11ecdae0d9237a94505d03a"}, + {file = "Pillow-9.1.1-cp310-cp310-win32.whl", hash = "sha256:b3fe2ff1e1715d4475d7e2c3e8dabd7c025f4410f79513b4ff2de3d51ce0fa9c"}, + {file = "Pillow-9.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5b650dbbc0969a4e226d98a0b440c2f07a850896aed9266b6fedc0f7e7834108"}, + {file = "Pillow-9.1.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:0b4d5ad2cd3a1f0d1df882d926b37dbb2ab6c823ae21d041b46910c8f8cd844b"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9370d6744d379f2de5d7fa95cdbd3a4d92f0b0ef29609b4b1687f16bc197063d"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b761727ed7d593e49671d1827044b942dd2f4caae6e51bab144d4accf8244a84"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a66fe50386162df2da701b3722781cbe90ce043e7d53c1fd6bd801bca6b48d4"}, + {file = "Pillow-9.1.1-cp37-cp37m-win32.whl", hash = "sha256:2b291cab8a888658d72b575a03e340509b6b050b62db1f5539dd5cd18fd50578"}, + {file = "Pillow-9.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d4331aeb12f6b3791911a6da82de72257a99ad99726ed6b63f481c0184b6fb9"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8844217cdf66eabe39567118f229e275f0727e9195635a15e0e4b9227458daaf"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b6617221ff08fbd3b7a811950b5c3f9367f6e941b86259843eab77c8e3d2b56b"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20d514c989fa28e73a5adbddd7a171afa5824710d0ab06d4e1234195d2a2e546"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088df396b047477dd1bbc7de6e22f58400dae2f21310d9e2ec2933b2ef7dfa4f"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53c27bd452e0f1bc4bfed07ceb235663a1df7c74df08e37fd6b03eb89454946a"}, + {file = "Pillow-9.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3f6c1716c473ebd1649663bf3b42702d0d53e27af8b64642be0dd3598c761fb1"}, + {file = "Pillow-9.1.1-cp38-cp38-win32.whl", hash = "sha256:c67db410508b9de9c4694c57ed754b65a460e4812126e87f5052ecf23a011a54"}, + {file = "Pillow-9.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f054b020c4d7e9786ae0404278ea318768eb123403b18453e28e47cdb7a0a4bf"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c17770a62a71718a74b7548098a74cd6880be16bcfff5f937f900ead90ca8e92"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3f6a6034140e9e17e9abc175fc7a266a6e63652028e157750bd98e804a8ed9a"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f372d0f08eff1475ef426344efe42493f71f377ec52237bf153c5713de987251"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09e67ef6e430f90caa093528bd758b0616f8165e57ed8d8ce014ae32df6a831d"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66daa16952d5bf0c9d5389c5e9df562922a59bd16d77e2a276e575d32e38afd1"}, + {file = "Pillow-9.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d78ca526a559fb84faaaf84da2dd4addef5edb109db8b81677c0bb1aad342601"}, + {file = "Pillow-9.1.1-cp39-cp39-win32.whl", hash = "sha256:55e74faf8359ddda43fee01bffbc5bd99d96ea508d8a08c527099e84eb708f45"}, + {file = "Pillow-9.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c150dbbb4a94ea4825d1e5f2c5501af7141ea95825fadd7829f9b11c97aaf6c"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:769a7f131a2f43752455cc72f9f7a093c3ff3856bf976c5fb53a59d0ccc704f6"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:488f3383cf5159907d48d32957ac6f9ea85ccdcc296c14eca1a4e396ecc32098"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b525a356680022b0af53385944026d3486fc8c013638cf9900eb87c866afb4c"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6e760cf01259a1c0a50f3c845f9cad1af30577fd8b670339b1659c6d0e7a41dd"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4165205a13b16a29e1ac57efeee6be2dfd5b5408122d59ef2145bc3239fa340"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937a54e5694684f74dcbf6e24cc453bfc5b33940216ddd8f4cd8f0f79167f765"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8"}, + {file = "Pillow-9.1.1.tar.gz", hash = "sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0"}, ] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, ] playwright = [ - {file = "playwright-1.21.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:f2d99c802f320db89ff92680c9ac9060203bc64bab880e5097d5c9a8b2cc7d3f"}, - {file = "playwright-1.21.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f0faf02c17912f734bc97ca95809f445c01779df94d2a01b4363ea66ff27ecff"}, - {file = "playwright-1.21.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:de392a2cb2bddd5a6d075e4020dfadee0fbb6a77c102fd56d8eadeae3e68d127"}, - {file = "playwright-1.21.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:f5cebb2502874b3a1137b48855ea25ebd6dda8c7d8905cb7c948c5627a907167"}, - {file = "playwright-1.21.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0263963c1035ef02d553ec2aa01464956a14b85824c6845ebf5d51fd7b1b9ee"}, - {file = "playwright-1.21.0-py3-none-win32.whl", hash = "sha256:368d2f9702c79becb34ad5f9b3f94c73ef46265372a1006a78dfd53c562c6248"}, - {file = "playwright-1.21.0-py3-none-win_amd64.whl", hash = "sha256:0cdd82d4d2ce176b596e960825a4be7b03b7637e9cb243e634e896d787160535"}, + {file = "playwright-1.22.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:9506d582e1a36aa19b06f5b5f8ae154265ec2fc5039217cfe8dfd66edb1a7563"}, + {file = "playwright-1.22.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd2e87b4d2a3d736bbd4a85ed7638c577dfc8098bcabd92d248440d51beac50b"}, + {file = "playwright-1.22.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:a36dfaf9be0228985b7b001887f66dc61e8300970c0602ae9d5b191da510a982"}, + {file = "playwright-1.22.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:78ddf51d0c08d94edb6d2ddf7b262f0d87a1c0ab5e121bfefa1945214c308f95"}, + {file = "playwright-1.22.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217b2f623527ded15d602ccca5138395a1677c67399c4494844d5341420d34e0"}, + {file = "playwright-1.22.0-py3-none-win32.whl", hash = "sha256:a4977211414532a525a057f8d461a7277fdfefa20eb577b2e0247523815ba521"}, + {file = "playwright-1.22.0-py3-none-win_amd64.whl", hash = "sha256:bc7827fcc037a9a6f571328c524d50bfd46db4ebdc415ab8b8efafae30c1d597"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -2360,38 +3134,38 @@ pre-commit = [ {file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"}, ] psutil = [ - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, - {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, - {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, - {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, - {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, - {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, - {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, - {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, - {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, - {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, - {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, - {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, - {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, - {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, - {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, - {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, - {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, - {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, - {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, ] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, @@ -2400,58 +3174,77 @@ py = [ py-cpuinfo = [ {file = "py-cpuinfo-8.0.0.tar.gz", hash = "sha256:5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5"}, ] +pycairo = [ + {file = "pycairo-1.21.0-cp310-cp310-win32.whl", hash = "sha256:44a2ecf34968de07b3b9dfdcdbccbd25aa3cab267200f234f84e81481a73bbf6"}, + {file = "pycairo-1.21.0-cp310-cp310-win_amd64.whl", hash = "sha256:f63c153a9ea3d21aff85e2caeee4b0c5d566b2368b4ed64826020d12953d76a4"}, + {file = "pycairo-1.21.0-cp37-cp37m-win32.whl", hash = "sha256:70936b19f967fa3cb3cd200c2608911227fa5d09dae21c166f64bc15e714ee41"}, + {file = "pycairo-1.21.0-cp37-cp37m-win_amd64.whl", hash = "sha256:31e1c4850db03201d33929cbe1905ce1b33202683ebda7bb0d4dba489115066b"}, + {file = "pycairo-1.21.0-cp38-cp38-win32.whl", hash = "sha256:dace6b356c476de27f8e1522428ac21a799c225703f746e2957d441f885dcb6c"}, + {file = "pycairo-1.21.0-cp38-cp38-win_amd64.whl", hash = "sha256:4357f20a6b1de8f1e8072a74ff68ab4c9a0ae698cd9f5c0f2b2cdd9b28b635f6"}, + {file = "pycairo-1.21.0-cp39-cp39-win32.whl", hash = "sha256:6d37375aab9f2bb6136f076c19815d72108383baae89fbc0d6cb8e5092217d02"}, + {file = "pycairo-1.21.0-cp39-cp39-win_amd64.whl", hash = "sha256:26b72b813c6f9d495f71057eab89c13e70a21c92360e9265abc049e0a931fa39"}, + {file = "pycairo-1.21.0.tar.gz", hash = "sha256:251907f18a552df938aa3386657ff4b5a4937dde70e11aa042bc297957f4b74b"}, +] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] pydantic = [ - {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, - {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, - {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, - {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, - {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, - {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, - {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, - {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, - {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, - {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, - {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, + {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, + {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, + {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, + {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, + {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, + {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, + {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, + {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, + {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, +] +pydub = [ + {file = "pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6"}, + {file = "pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f"}, ] pyee = [ {file = "pyee-8.1.0-py2.py3-none-any.whl", hash = "sha256:383973b63ad7ed5e3c0311f8b179c52981f9e7b3eaea0e9a830d13ec34dde65f"}, {file = "pyee-8.1.0.tar.gz", hash = "sha256:92dacc5bd2bdb8f95aa8dd2585d47ca1c4840e2adb95ccf90034d64f725bfd31"}, ] +pyglet = [ + {file = "pyglet-1.5.26-py3-none-any.whl", hash = "sha256:529b7b1198df3a8399b9621a99ca5e29cd32bb98428bd0e8ba699afa4ba96d2b"}, + {file = "pyglet-1.5.26.zip", hash = "sha256:ee8c5e0b5b87df84188e20e552982eba8da00944b4c5560f1cfdd5c9714d19b0"}, +] pygments = [ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.13.8-py3-none-any.whl", hash = "sha256:f87e863a0b08f64b5230e7e779bcb75276346995737b2c0dc2793070487b1ff6"}, - {file = "pylint-2.13.8.tar.gz", hash = "sha256:ced8968c3b699df0615e2a709554dec3ddac2f5cd06efadb69554a69eeca364a"}, + {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, + {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -2578,9 +3371,31 @@ pynvml = [ {file = "pynvml-11.4.1-py3-none-any.whl", hash = "sha256:d27be542cd9d06558de18e2deffc8022ccd7355bc7382255d477038e7e424c6c"}, {file = "pynvml-11.4.1.tar.gz", hash = "sha256:b2e4a33b80569d093b513f5804db0c7f40cfc86f15a013ae7a8e99c5e175d5dd"}, ] +pyobjc-core = [ + {file = "pyobjc-core-8.5.tar.gz", hash = "sha256:704c275439856c0d1287469f0d589a7d808d48b754a93d9ce5415d4eaf06d576"}, + {file = "pyobjc_core-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0c234143b48334443f5adcf26e668945a6d47bc1fa6223e80918c6c735a029d9"}, + {file = "pyobjc_core-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1486ee533f0d76f666804ce89723ada4db56bfde55e56151ba512d3f849857f8"}, + {file = "pyobjc_core-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:412de06dfa728301c04b3e46fd7453320a8ae8b862e85236e547cd797a73b490"}, + {file = "pyobjc_core-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b3e09cccb1be574a82cc9f929ae27fc4283eccc75496cb5d51534caa6bb83a3"}, + {file = "pyobjc_core-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:eeafe21f879666ab7f57efcc6b007c9f5f8733d367b7e380c925203ed83f000d"}, + {file = "pyobjc_core-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c0071686976d7ea8c14690950e504a13cb22b4ebb2bc7b5ec47c1c1c0f6eff41"}, +] +pyobjc-framework-cocoa = [ + {file = "pyobjc-framework-Cocoa-8.5.tar.gz", hash = "sha256:569bd3a020f64b536fb2d1c085b37553e50558c9f907e08b73ffc16ae68e1861"}, + {file = "pyobjc_framework_Cocoa-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7a7c160416696bf6035dfcdf0e603aaa52858d6afcddfcc5ab41733619ac2529"}, + {file = "pyobjc_framework_Cocoa-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ceba444282030be8596b812260e8d28b671254a51052ad778d32da6e17db847"}, + {file = "pyobjc_framework_Cocoa-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f46b2b161b8dd40c7b9e00bc69636c3e6480b2704a69aee22ee0154befbe163a"}, + {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b31d425aee8698cbf62b187338f5ca59427fa4dca2153a73866f7cb410713119"}, + {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:898359ac1f76eedec8aa156847682378a8950824421c40edb89391286e607dc4"}, + {file = "pyobjc_framework_Cocoa-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:baa2947f76b119a3360973d74d57d6dada87ac527bab9a88f31596af392f123c"}, +] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pyrr = [ + {file = "pyrr-0.10.3-py3-none-any.whl", hash = "sha256:d8af23fb9bb29262405845e1c98f7339fbba5e49323b98528bd01160a75c65ac"}, + {file = "pyrr-0.10.3.tar.gz", hash = "sha256:3c0f7b20326e71f706a610d58f2190fff73af01eef60c19cb188b186f0ec7e1d"}, ] pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, @@ -2615,10 +3430,6 @@ python-dotenv = [ {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, ] -python-http-client = [ - {file = "python_http_client-3.3.7-py3-none-any.whl", hash = "sha256:ad371d2bbedc6ea15c26179c6222a78bc9308d272435ddf1d5c84f068f249a36"}, - {file = "python_http_client-3.3.7.tar.gz", hash = "sha256:bf841ee45262747e00dec7ee9971dfb8c7d83083f5713596488d67739170cea0"}, -] python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] @@ -2678,8 +3489,8 @@ requests = [ {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] rich = [ - {file = "rich-12.3.0-py3-none-any.whl", hash = "sha256:0eb63013630c6ee1237e0e395d51cb23513de6b5531235e33889e8842bdf3a6f"}, - {file = "rich-12.3.0.tar.gz", hash = "sha256:7e8700cda776337036a712ff0495b04052fb5f957c7dfb8df997f88350044b64"}, + {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, + {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"}, ] scalene = [ {file = "scalene-1.5.8-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:87db62d0639386e7b751021a5b63b3143ac11d31dbe130830ce27a744e54dadc"}, @@ -2695,9 +3506,42 @@ scalene = [ {file = "scalene-1.5.8-cp39-cp39-win_amd64.whl", hash = "sha256:26a25311d9786cbf31fc3f17b2a33a77f9dce62089dcd8fd420bb0e268971d2a"}, {file = "scalene-1.5.8.tar.gz", hash = "sha256:1f961241702c87ce6749befe53873ffe2a215c4c264b72b59128e50fa1a8fc87"}, ] -sendgrid = [ - {file = "sendgrid-6.9.7-py3-none-any.whl", hash = "sha256:ba8d3d39e1f392b9434365d53983b2fc6a458ae0496d2d9e103c15e1743ab66b"}, - {file = "sendgrid-6.9.7.tar.gz", hash = "sha256:fa30411c627690fecd0ef6b1d4e1783f2d0272aa14b5fffb133ebd1e31114f16"}, +scipy = [ + {file = "scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4"}, + {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4"}, + {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125"}, + {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba"}, + {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d"}, + {file = "scipy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca"}, + {file = "scipy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462"}, + {file = "scipy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6"}, + {file = "scipy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434"}, + {file = "scipy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f"}, + {file = "scipy-1.8.1.tar.gz", hash = "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33"}, +] +screeninfo = [ + {file = "screeninfo-0.8-py3-none-any.whl", hash = "sha256:dac455fbed79e82c481d59a00962f543e5a9bf3c2cc9f0e48e2714eb8d3cec23"}, + {file = "screeninfo-0.8.tar.gz", hash = "sha256:9501bf8b8458c7d1be4cb0ac9abddddfa80b932fb3f65bfcb54f5586434b1dc5"}, +] +seaborn = [ + {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, + {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, +] +setuptools-scm = [ + {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, + {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, ] shapely = [ {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c9e3400b716c51ba43eea1678c28272580114e009b6c78cdd00c44df3e325fa"}, @@ -2739,6 +3583,42 @@ six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +skia-pathops = [ + {file = "skia-pathops-0.7.2.zip", hash = "sha256:19d85c9afefba15af92b13c8889964f77e6382f58f42c6040b4019eb28cba690"}, + {file = "skia_pathops-0.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8ce9ee85d53fff7c9e444f25ea98b817f87440694babde069df0112d37bf2ed4"}, + {file = "skia_pathops-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:754a37e32e06d0c0affdae3cd7f97496997a07a322d3aaa0964a0bfa0fe84bfc"}, + {file = "skia_pathops-0.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e4e6c792303419848ba8c035f3496faafcf4a23ec0b0c7596eda0c77b5d1500"}, + {file = "skia_pathops-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6b518fca15b4456ddf99062f334c0333a5165be976fb0c9e071af29128583f7"}, + {file = "skia_pathops-0.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:44a3c57c9bcae38fcc438ac6b048ba0c50759994ab466c424c5d7f6812d3a222"}, + {file = "skia_pathops-0.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e35b8962c5b9f10fb40f66708c18cc0bc17e0b0c98230e72514f780a1f42aac9"}, + {file = "skia_pathops-0.7.2-cp310-cp310-win32.whl", hash = "sha256:14172fc2817b7e51d3e6859b435d11c917db68beb11d441aad4b247113c902a8"}, + {file = "skia_pathops-0.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:17ee7f807e434e66cf8398607b696c7d529f1a2416452135a5f327c4e54b511d"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:835b55899665b7fa14e51eb1f2eaa4c0e876bc5965dc92b7e89dc00519620f56"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a58fcde1010a58bd6f251c4f2af2e0a37e281b4e807e295c84dcfb3541fef78b"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28060f7a64fa834b1a88fb053227da30b5c27699dc08aa347a985ac3eced9b5"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a8e7729f32ac87419467efd6858c375fe01da21eb62c8a553c43327ff1cf9d7"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:577371bc51a2b3efdee943b1c2f61af8765b7383bf2bf490968e61c7acb2204d"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-win32.whl", hash = "sha256:bb8d25a0b5659cf1981c90c843b229c836ad0277808b8becbbb2a92972078cbf"}, + {file = "skia_pathops-0.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6b61da9869d11b58bf471b851adc647fe989d625f0ddd02bc78d1cdcd3e0db60"}, + {file = "skia_pathops-0.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:56dbaea031aca9f9e219a42fc454f386b0816d011119da0b7d43d92110e48148"}, + {file = "skia_pathops-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7aa3ec93b5d7b6c4da607453b7b082770756ad6d5346af2dc6a4df061b786eed"}, + {file = "skia_pathops-0.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18fa97eab0e20daf89f57951f2218a8ac42493c7455eee37793e7771c414e28b"}, + {file = "skia_pathops-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:172ddfc3bc573d994bf8d4a6ea1eb35a97976e3959831e306e4eca211c92392b"}, + {file = "skia_pathops-0.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ab02f93bbad07cf249498271c4be885b27aea0b747b769cbfc255e7cb10cc689"}, + {file = "skia_pathops-0.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:24c7cb009ba379a0f4683e66801d752f87f3dcf1c76f57863155aec557042ed3"}, + {file = "skia_pathops-0.7.2-cp38-cp38-win32.whl", hash = "sha256:91c760e780bf99eac3be974d84ec7f61317794ed6deae54a28d2c8d5f61089b6"}, + {file = "skia_pathops-0.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:a0ea795750d0d41c26b158b1018d94a60f78008a77e75f2c56f39e24d5541d68"}, + {file = "skia_pathops-0.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1a14fcaa6902e7f9ba8944e90e532e020b8f9554bd7443daed3caf9d9919cb8"}, + {file = "skia_pathops-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:462abfc5529fd42b433bf5ce88bd1cb1e3d589269f67600472b79feb2be3c081"}, + {file = "skia_pathops-0.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3328815e6bcced0947df374937d51c6a386f260259c1732ff71b1cdd72c3d"}, + {file = "skia_pathops-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1932a387b14c9661f4a578cfd74a71b01436adcc4ef3d0f526b85b7d3f28f2a3"}, + {file = "skia_pathops-0.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c261583734215751b59e12290323a177770002618819ad670acdb5b98b60dff6"}, + {file = "skia_pathops-0.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:50fc18167cbb93b2c57c151289e2773b1db9347ba56d82e35f6fed1bd79a9268"}, + {file = "skia_pathops-0.7.2-cp39-cp39-win32.whl", hash = "sha256:34a8eaace3386880303a564945e292961cfb1cadd06f178b1f959a6a0b8d6c40"}, + {file = "skia_pathops-0.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:1e89d3cc2be2748ba09a06abc5cfe86743c0ec4a16366e34122d9e74e1276204"}, + {file = "skia_pathops-0.7.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bf945cd0df19160c2eb3241db5773c6ca45404dfc661a64a825b93dd9517068"}, + {file = "skia_pathops-0.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9cd88c5bde4a0889ce090d2788eb8db0a6a3ed23c01a77c49cb847739b1257a"}, +] snakeviz = [ {file = "snakeviz-2.1.1-py2.py3-none-any.whl", hash = "sha256:931142dc927101c9a4b6e89bc0577ff1a3d1886b483a04e6af70c31d2c3dce19"}, {file = "snakeviz-2.1.1.tar.gz", hash = "sha256:0d96c006304f095cb4b3fb7ed98bb866ca35a7ca4ab9020bbc27d295ee4c94d9"}, @@ -2797,8 +3677,8 @@ sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, {file = "sqlmodel-0.0.6.tar.gz", hash = "sha256:3b4f966b9671b24d85529d274e6c4dbc7753b468e35d2d6a40bd75cad1f66813"}, ] -starkbank-ecdsa = [ - {file = "starkbank-ecdsa-2.0.3.tar.gz", hash = "sha256:73b62b1b3de54bbaa05dedb1a2d951c033432bb074de899e19d4a96a36b21df6"}, +srt = [ + {file = "srt-3.5.2.tar.gz", hash = "sha256:7aa4ad5ce4126d3f53b3e7bc4edaa86653d0378bf1c0b1ab8c59f5ab41384450"}, ] starlette = [ {file = "starlette-0.18.0-py3-none-any.whl", hash = "sha256:377d64737a0e03560cb8eaa57604afee143cea5a4996933242798a7820e64f53"}, @@ -2863,6 +3743,10 @@ tornado = [ {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] +tqdm = [ + {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, + {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, +] typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, @@ -2884,6 +3768,33 @@ virtualenv = [ {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, ] +watchdog = [ + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"}, + {file = "watchdog-2.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7721ac736170b191c50806f43357407138c6748e4eb3e69b071397f7f7aaeedd"}, + {file = "watchdog-2.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ce7376aed3da5fd777483fe5ebc8475a440c6d18f23998024f832134b2938e7b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f9ee4c6bf3a1b2ed6be90a2d78f3f4bbd8105b6390c04a86eb48ed67bbfa0b0b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68dbe75e0fa1ba4d73ab3f8e67b21770fbed0651d32ce515cd38919a26873266"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0c520009b8cce79099237d810aaa19bc920941c268578436b62013b2f0102320"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efcc8cbc1b43902571b3dce7ef53003f5b97fe4f275fe0489565fc6e2ebe3314"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:746e4c197ec1083581bb1f64d07d1136accf03437badb5ff8fcb862565c193b2"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ae17b6be788fb8e4d8753d8d599de948f0275a232416e16436363c682c6f850"}, + {file = "watchdog-2.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddde157dc1447d8130cb5b8df102fad845916fe4335e3d3c3f44c16565becbb7"}, + {file = "watchdog-2.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4978db33fc0934c92013ee163a9db158ec216099b69fce5aec790aba704da412"}, + {file = "watchdog-2.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b962de4d7d92ff78fb2dbc6a0cb292a679dea879a0eb5568911484d56545b153"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1e5d0fdfaa265c29dc12621913a76ae99656cf7587d03950dfeb3595e5a26102"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_armv7l.whl", hash = "sha256:036ed15f7cd656351bf4e17244447be0a09a61aaa92014332d50719fc5973bc0"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_i686.whl", hash = "sha256:2962628a8777650703e8f6f2593065884c602df7bae95759b2df267bd89b2ef5"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64.whl", hash = "sha256:156ec3a94695ea68cfb83454b98754af6e276031ba1ae7ae724dc6bf8973b92a"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:47598fe6713fc1fee86b1ca85c9cbe77e9b72d002d6adeab9c3b608f8a5ead10"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_s390x.whl", hash = "sha256:fed4de6e45a4f16e4046ea00917b4fe1700b97244e5d114f594b4a1b9de6bed8"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:24dedcc3ce75e150f2a1d704661f6879764461a481ba15a57dc80543de46021c"}, + {file = "watchdog-2.1.8-py3-none-win32.whl", hash = "sha256:6ddf67bc9f413791072e3afb466e46cc72c6799ba73dea18439b412e8f2e3257"}, + {file = "watchdog-2.1.8-py3-none-win_amd64.whl", hash = "sha256:88ef3e8640ef0a64b7ad7394b0f23384f58ac19dd759da7eaa9bc04b2898943f"}, + {file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"}, + {file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"}, +] watchgod = [ {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, diff --git a/pyproject.toml b/pyproject.toml index 41a816a1..8a796f45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,6 @@ pytest-playwright = "^0.3.0" psutil = "^5.8" # Execute command on server via SSH, or push files via SFTP paramiko = "^2.8" -#types-paramiko = "^2.8" # Simpler argparse click = "^8.1" # SQL ORM @@ -65,10 +64,21 @@ beanie = "^1.11" alembic = "^1.7" # Load environment variables from .env file python-dotenv = "^0.20" -# Send emails via https://sendgrid.com/ -sendgrid = "^6.9" +# SC2 Replay parser zephyrus-sc2-parser = "^0.3.7" +# Fastapi multipart upload? python-multipart = "^0.0.5" +# Data science and plotting +pandas = "^1.4.2" +# Plotting +seaborn = "^0.11.2" +# Plotting +matplotlib = "^3.5.2" +# Plotting +bokeh = "^2.4.3" +# Animation +manim = "^0.15.2" + [tool.poetry.dev-dependencies] # Autoformatter diff --git a/python_examples/examples/plot_data/README.md b/python_examples/examples/plot_data/README.md new file mode 100644 index 00000000..793ece3d --- /dev/null +++ b/python_examples/examples/plot_data/README.md @@ -0,0 +1,15 @@ +# Plotting libraries + +pandas + +matplotlib + +seaborn + +bokeh + +# Animation libraries + +manim + + diff --git a/python_examples/examples/plot_data/__init__.py b/python_examples/examples/plot_data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python_examples/examples/plot_data/bokeh_plot.py b/python_examples/examples/plot_data/bokeh_plot.py new file mode 100644 index 00000000..3b210f11 --- /dev/null +++ b/python_examples/examples/plot_data/bokeh_plot.py @@ -0,0 +1,161 @@ +from math import pi + +import numpy as np +import pandas as pd +from bokeh.io import output_file, save +from bokeh.palettes import Category20c +from bokeh.plotting import figure +from bokeh.transform import cumsum, linear_cmap +from bokeh.util.hex import axial_to_cartesian, hexbin + + +def plot_01(): + p = figure(width=400, height=400) + p.vbar( + x=[1, 2, 3], + width=0.5, + bottom=0, + top=[1.2, 2.5, 3.7], + color='firebrick', + ) + output_file('bokeh_vbar.html') + save(p) + # Open in browser + # show(p) + + +def plot_02(): + + q = np.array([0, 0, 0, -1, -1, 1, 1]) + r = np.array([0, -1, 1, 0, 1, -1, 0]) + + p = figure(width=400, height=400, toolbar_location=None) + p.grid.visible = False + + p.hex_tile(q, r, size=1, fill_color=['firebrick'] * 3 + ['navy'] * 4, line_color='white', alpha=0.5) + + x, y = axial_to_cartesian(q, r, 1, 'pointytop') + + p.text(x, y, text=[f'({q}, {r})' for (q, r) in zip(q, r)], text_baseline='middle', text_align='center') + output_file('bokeh_hex_coords.html') + save(p) + + +def plot_03(): + n = 50000 + x = np.random.standard_normal(n) + y = np.random.standard_normal(n) + + bins = hexbin(x, y, 0.1) + + p = figure(tools='wheel_zoom,reset', match_aspect=True, background_fill_color='#440154') + p.grid.visible = False + + p.hex_tile( + q='q', + r='r', + size=0.1, + line_color=None, + source=bins, + fill_color=linear_cmap('counts', 'Viridis256', 0, max(bins.counts)) + ) + + output_file('bokeh_hex_tile.html') + + save(p) + + +def plot_04(): + p = figure(width=400, height=400) + p.multi_polygons( + xs=[ + [[[1, 1, 2, 2], [1.2, 1.6, 1.6], [1.8, 1.8, 1.6]], [[3, 3, 4]]], + [[[1, 2, 2, 1], [1.3, 1.3, 1.7, 1.7]]], + ], + ys=[ + [[[4, 3, 3, 4], [3.2, 3.2, 3.6], [3.4, 3.8, 3.8]], [[1, 3, 1]]], + [[[1, 1, 2, 2], [1.3, 1.7, 1.7, 1.3]]], + ], + color=['blue', 'red'] + ) + + output_file('bokeh_multipolygons.html') + save(p) + + +def plot_05(): + x = np.linspace(0, 10, 250) + y = np.linspace(0, 10, 250) + xx, yy = np.meshgrid(x, y) + d = np.sin(xx) * np.cos(yy) + + p = figure(width=400, height=400) + p.x_range.range_padding = p.y_range.range_padding = 0 + + p.image(image=[d], x=0, y=0, dw=10, dh=10, palette='Spectral11', level='image') + p.grid.grid_line_width = 0.5 + + output_file('bokeh_image.html', title='image.py example') + save(p) + + +def plot_06(): + x = { + 'United States': 157, + 'United Kingdom': 93, + 'Japan': 89, + 'China': 63, + 'Germany': 44, + 'India': 42, + 'Italy': 40, + 'Australia': 35, + 'Brazil': 32, + 'France': 31, + 'Taiwan': 31, + 'Spain': 29 + } + + data = pd.Series(x).reset_index(name='value').rename(columns={'index': 'country'}) + data['angle'] = data['value'] / data['value'].sum() * 2 * pi + data['color'] = Category20c[len(x)] + + p = figure( + height=350, + title='Pie Chart', + toolbar_location=None, + tools='hover', + tooltips='@country: @value', + x_range=(-0.5, 1.0) + ) + + p.wedge( + x=0, + y=1, + radius=0.4, + start_angle=cumsum('angle', include_zero=True), + end_angle=cumsum('angle'), + line_color='white', + fill_color='color', + legend_field='country', + source=data + ) + + p.axis.axis_label = None + p.axis.visible = False + p.grid.grid_line_color = None + + output_file('bokeh_piechart.html') + save(p) + + +def main(): + plot_01() + plot_02() + plot_03() + plot_04() + plot_05() + plot_06() + + +if __name__ == '__main__': + main() diff --git a/python_examples/examples/plot_data/matplotlib_plot.py b/python_examples/examples/plot_data/matplotlib_plot.py new file mode 100644 index 00000000..92bda51c --- /dev/null +++ b/python_examples/examples/plot_data/matplotlib_plot.py @@ -0,0 +1,154 @@ +import matplotlib.pyplot as plt +import numpy as np + + +def plot_01(): + plt.plot([1, 2, 3, 4]) + plt.ylabel('some numbers') + # Display plot in Pycharm or terminal + # plt.show() + plt.savefig('matplotlib_plot_01.png') + + +def plot_02(): + plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) + plt.savefig('matplotlib_plot_02.png') + + +def plot_03(): + # evenly sampled time at 200ms intervals + t = np.arange(0., 5., 0.2) + + # red dashes, blue squares and green triangles + plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') + plt.savefig('matplotlib_plot_03.png') + + +def plot_04(): + data = { + 'a': np.arange(50), + 'c': np.random.randint(0, 50, 50), + 'd': np.random.randn(50), + } + data['b'] = data['a'] + 10 * np.random.randn(50) + data['d'] = np.abs(data['d']) * 100 + + plt.scatter('a', 'b', c='c', s='d', data=data) + plt.xlabel('entry a') + plt.ylabel('entry b') + plt.savefig('matplotlib_plot_04.png') + + +def plot_05(): + mu, sigma = 100, 15 + x = mu + sigma * np.random.randn(10000) + + # the histogram of the data + _n, _bins, _patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75) + + plt.xlabel('Smarts') + plt.ylabel('Probability') + plt.title('Histogram of IQ') + plt.text(60, .025, r'$\mu=100,\ \sigma=15$') + plt.axis([40, 160, 0, 0.03]) + plt.grid(True) + plt.savefig('matplotlib_plot_05.png') + + +def plot_06(): + _ax = plt.subplot() + + t = np.arange(0.0, 5.0, 0.01) + s = np.cos(2 * np.pi * t) + _line, = plt.plot(t, s, lw=2) + + plt.annotate( + 'local max', + xy=(2, 1), + xytext=(3, 1.5), + arrowprops=dict(facecolor='black', shrink=0.05), + ) + + plt.ylim(-2, 2) + plt.savefig('matplotlib_plot_06.png') + + +def plot_07(): + # Fixing random state for reproducibility + np.random.seed(19680801) + + # make up some data in the open interval (0, 1) + y = np.random.normal(loc=0.5, scale=0.4, size=1000) + y = y[(y > 0) & (y < 1)] + y.sort() + x = np.arange(len(y)) + + # plot with various axes scales + plt.figure() + + # linear + plt.subplot(221) + plt.plot(x, y) + plt.yscale('linear') + plt.title('linear') + plt.grid(True) + + # log + plt.subplot(222) + plt.plot(x, y) + plt.yscale('log') + plt.title('log') + plt.grid(True) + + # symmetric log + plt.subplot(223) + plt.plot(x, y - y.mean()) + plt.yscale('symlog', linthresh=0.01) + plt.title('symlog') + plt.grid(True) + + # logit + plt.subplot(224) + plt.plot(x, y) + plt.yscale('logit') + plt.title('logit') + plt.grid(True) + # Adjust the subplot layout, because the logit one may take more space + # than usual, due to y-tick labels like "1 - 10^{-3}" + plt.subplots_adjust( + top=0.92, + bottom=0.08, + left=0.10, + right=0.95, + hspace=0.25, + wspace=0.35, + ) + plt.savefig('matplotlib_plot_07.png') + + +def plot_08(): + # Pie chart, where the slices will be ordered and plotted counter-clockwise: + labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' + sizes = [15, 30, 45, 10] + explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') + + _fig1, ax1 = plt.subplots() + ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) + ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. + + plt.savefig('matplotlib_plot_08.png') + + +def main(): + plot_01() + plot_02() + plot_03() + plot_04() + plot_05() + plot_06() + plot_07() + plot_08() + + +if __name__ == '__main__': + main() diff --git a/python_examples/examples/plot_data/pandas_plot.py b/python_examples/examples/plot_data/pandas_plot.py new file mode 100644 index 00000000..7a1f8cfc --- /dev/null +++ b/python_examples/examples/plot_data/pandas_plot.py @@ -0,0 +1,171 @@ +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +# plt.close("all") + + +def plot_01(): + ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) + + ts = ts.cumsum() + + ts.plot() + # Display plot in Pycharm or terminal + # plt.show() + plt.savefig('pandas_plot_01.png') + + +def plot_02(): + ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) + df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) + + df = df.cumsum() + + df.plot() + plt.savefig('pandas_plot_02.png') + + +def plot_03(): + ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) + df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) + + df3 = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum() + + df3['A'] = pd.Series(list(range(len(df)))) + + df3.plot(x='A', y='B') + + plt.savefig('pandas_plot_03.png') + + +def plot_04(): + ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) + df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) + + df.iloc[5].plot(kind='bar') + + plt.savefig('pandas_plot_04.png') + + +def plot_05(): + ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) + df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) + + plt.axhline(0, color='k') + df.iloc[5].plot.bar() + + plt.savefig('pandas_plot_05.png') + + +def plot_06(): + df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) + + df2.plot.bar() + plt.savefig('pandas_plot_06.png') + + +def plot_07(): + df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) + df2.plot.bar(stacked=True) + + plt.savefig('pandas_plot_07.png') + + +def plot_08(): + + df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) + df2.plot.barh(stacked=True) + plt.savefig('pandas_plot_08.png') + + +def plot_09(): + + df4 = pd.DataFrame( + { + 'a': np.random.randn(1000) + 1, + 'b': np.random.randn(1000), + 'c': np.random.randn(1000) - 1, + }, + columns=['a', 'b', 'c'], + ) + + df4.plot.hist(alpha=0.5) + plt.savefig('pandas_plot_09.png') + + +def plot_10(): + df4 = pd.DataFrame( + { + 'a': np.random.randn(1000) + 1, + 'b': np.random.randn(1000), + 'c': np.random.randn(1000) - 1, + }, + columns=['a', 'b', 'c'], + ) + + df4.plot.hist(stacked=True, bins=20) + plt.savefig('pandas_plot_10.png') + + +def plot_11(): + df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) + + df.plot.area() + plt.savefig('pandas_plot_11.png') + + +def plot_12(): + series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series') + + series.plot.pie(figsize=(6, 6)) + plt.savefig('pandas_plot_12.png') + + +def plot_13(): + df = pd.DataFrame(3 * np.random.rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y']) + + df.plot.pie(subplots=True, figsize=(8, 4)) + plt.savefig('pandas_plot_13.png') + + +def plot_14(): + series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series') + series.plot.pie( + labels=['AA', 'BB', 'CC', 'DD'], + colors=['r', 'g', 'b', 'c'], + autopct='%.2f', + fontsize=20, + figsize=(6, 6), + ) + + plt.savefig('pandas_plot_14.png') + + +def plot_15(): + series = pd.Series([0.1] * 4, index=['a', 'b', 'c', 'd'], name='series2') + + series.plot.pie(figsize=(6, 6)) + plt.savefig('pandas_plot_15.png') + + +def main(): + plot_01() + plot_02() + plot_03() + plot_04() + plot_05() + plot_06() + plot_07() + plot_08() + plot_09() + plot_10() + plot_11() + plot_12() + plot_13() + plot_14() + plot_15() + + +if __name__ == '__main__': + main() diff --git a/python_examples/examples/plot_data/seaborn_plot.py b/python_examples/examples/plot_data/seaborn_plot.py new file mode 100644 index 00000000..88764e0c --- /dev/null +++ b/python_examples/examples/plot_data/seaborn_plot.py @@ -0,0 +1,90 @@ +# Import seaborn +import matplotlib.pyplot as plt +import seaborn as sns + +# Apply the default theme +sns.set_theme() + +# Load an example dataset +tips = sns.load_dataset('tips') + + +def plot_01(): + # Create a visualization + sns.relplot( + data=tips, + x='total_bill', + y='tip', + col='time', + hue='smoker', + style='smoker', + size='size', + ) + + # Save as image via + plt.savefig('seaborn_plot_01.png') + + # Plotting in pycharm / terminal doesn't seem to work + # plt.show() + + +def plot_02(): + dots = sns.load_dataset('dots') + sns.relplot( + data=dots, + kind='line', + x='time', + y='firing_rate', + col='align', + hue='choice', + size='coherence', + style='choice', + facet_kws=dict(sharex=False), + ) + + plt.savefig('seaborn_plot_02.png') + + +def plot_03(): + fmri = sns.load_dataset('fmri') + sns.relplot( + data=fmri, + kind='line', + x='timepoint', + y='signal', + col='region', + hue='event', + style='event', + ) + + plt.savefig('seaborn_plot_03.png') + + +def plot_04(): + penguins = sns.load_dataset('penguins') + sns.jointplot(data=penguins, x='flipper_length_mm', y='bill_length_mm', hue='species') + plt.savefig('seaborn_plot_04.png') + + +def plot_05(): + penguins = sns.load_dataset('penguins') + g = sns.PairGrid(penguins, hue='species', corner=True) + g.map_lower(sns.kdeplot, hue=None, levels=5, color='.2') + g.map_lower(sns.scatterplot, marker='+') + g.map_diag(sns.histplot, element='step', linewidth=0, kde=True) + g.add_legend(frameon=True) + g.legend.set_bbox_to_anchor((.61, .6)) + + plt.savefig('seaborn_plot_05.png') + + +def main(): + plot_01() + plot_02() + plot_03() + plot_04() + plot_05() + + +if __name__ == '__main__': + main() diff --git a/python_examples/main.py b/python_examples/main.py index 2d07852a..9243d224 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -36,6 +36,10 @@ from python_examples.examples.other.image_manipulation import mass_convert_images from python_examples.examples.other.multiprocessing_example import do_math, do_multiprocessing from python_examples.examples.other.regex_example import regex_match_test, test_all_roman_numbers +from python_examples.examples.plot_data.bokeh_plot import main as bokeh_plot_main +from python_examples.examples.plot_data.matplotlib_plot import main as matplotlib_plot_main +from python_examples.examples.plot_data.pandas_plot import main as pandas_plot_main +from python_examples.examples.plot_data.seaborn_plot import main as seaborn_plot_main logger.remove() # Remove previous default handlers # Log to console @@ -119,14 +123,11 @@ def mass_replace(): logger.info(f'Mass replaced\n{text}\nto\n{new_text}') -def plot_lists(): - # TODO - pass - - -def plot_numpy_array(): - # TODO - pass +def plot_data(): + matplotlib_plot_main() + bokeh_plot_main() + pandas_plot_main() + seaborn_plot_main() if __name__ == '__main__': From 61c4978b79aca599cd740ac56d2cb5c1e063ba04 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:38:56 +0200 Subject: [PATCH 054/391] Enable all OS, remove manim --- .github/workflows/python_examples.yml | 2 +- poetry.lock | 652 +------------------------- pyproject.toml | 2 +- 3 files changed, 6 insertions(+), 650 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index d2ce921f..53def0cd 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [macos-latest, windows-latest, ubuntu-latest] python-version: ['3.8', '3.9', '3.10'] mongodb-version: [5.0.0] diff --git a/poetry.lock b/poetry.lock index a3d17298..7fd5a891 100644 --- a/poetry.lock +++ b/poetry.lock @@ -221,17 +221,6 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "click-default-group" -version = "1.2.2" -description = "Extends click.Group to invoke a command without explicit subcommand name" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -click = "*" - [[package]] name = "cloudpickle" version = "2.1.0" @@ -240,18 +229,6 @@ category = "dev" optional = false python-versions = ">=3.6" -[[package]] -name = "cloup" -version = "0.13.1" -description = "Adds features to Click: option groups, constraints, subcommand sections and help themes." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -click = ">=7.1,<9.0" -typing-extensions = {version = "*", markers = "python_version <= \"3.8\""} - [[package]] name = "colorama" version = "0.4.4" @@ -260,22 +237,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -[[package]] -name = "colour" -version = "0.1.5" -description = "converts and manipulates various color representation (HSL, RVB, web, X11, ...)" -category = "main" -optional = false -python-versions = "*" - -[package.extras] -test = ["nose"] - [[package]] name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -334,14 +300,6 @@ category = "main" optional = false python-versions = ">=3.6" -[[package]] -name = "cython" -version = "0.29.30" -description = "The Cython compiler for writing C extensions for the Python language." -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - [[package]] name = "dataclasses-json" version = "0.5.7" @@ -358,14 +316,6 @@ typing-inspect = ">=0.4.0" [package.extras] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] -[[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" -category = "main" -optional = false -python-versions = ">=3.5" - [[package]] name = "dill" version = "0.3.5.1" @@ -461,14 +411,6 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -[[package]] -name = "glcontext" -version = "2.3.6" -description = "Portable OpenGL Context" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "greenlet" version = "1.1.2" @@ -610,17 +552,6 @@ requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] -[[package]] -name = "isosurfaces" -version = "0.1.0" -description = "Construct isolines/isosurfaces over a 2D/3D scalar field defined by a function (not a uniform grid)" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -numpy = "*" - [[package]] name = "jinja2" version = "3.1.2" @@ -707,66 +638,6 @@ six = "*" [package.extras] restructuredText = ["rst2ansi"] -[[package]] -name = "manim" -version = "0.15.2" -description = "Animation engine for explanatory math videos." -category = "main" -optional = false -python-versions = ">=3.7,<3.11" - -[package.dependencies] -click = ">=7.2" -click-default-group = ">=1.2.2,<2.0.0" -cloup = ">=0.13.0,<0.14.0" -colour = ">=0.1.5,<0.2.0" -decorator = ">=5.0.7,<6.0.0" -isosurfaces = "0.1.0" -manimpango = ">=0.4.0.post0,<0.5.0" -mapbox-earcut = ">=0.12.10,<0.13.0" -moderngl = ">=5.6.3,<6.0.0" -moderngl-window = ">=2.3.0,<3.0.0" -networkx = ">=2.5,<3.0" -numpy = ">=1.9,<2.0" -Pillow = ">=8.4,<10.0" -pycairo = ">=1.19,<2.0" -pydub = ">=0.25.1,<0.26.0" -Pygments = ">=2.10.0,<3.0.0" -requests = ">=2.26.0,<3.0.0" -rich = ">=6.0,<12.0.0 || >12.0.0" -scipy = ">=1.7.3,<2.0.0" -screeninfo = ">=0.8,<0.9" -skia-pathops = ">=0.7.0,<0.8.0" -srt = ">=3.5.0,<4.0.0" -tqdm = ">=4.62.3,<5.0.0" -watchdog = ">=2.1.6,<3.0.0" - -[package.extras] -jupyterlab = ["jupyterlab (>=3.0,<4.0)"] -gui = ["dearpygui (>=1.3.1,<2.0.0)"] - -[[package]] -name = "manimpango" -version = "0.4.1" -description = "Bindings for Pango for using with Manim." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "mapbox-earcut" -version = "0.12.11" -description = "Python bindings for the mapbox earcut C++ polygon triangulation library." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -numpy = "*" - -[package.extras] -test = ["pytest"] - [[package]] name = "markupsafe" version = "2.1.1" @@ -830,42 +701,6 @@ category = "dev" optional = false python-versions = ">=3.6" -[[package]] -name = "moderngl" -version = "5.6.4" -description = "ModernGL: High performance rendering for Python 3" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -glcontext = ">=2,<3" - -[[package]] -name = "moderngl-window" -version = "2.4.1" -description = "A cross platform helper library for ModernGL making window creation and resource loading simple" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -moderngl = "<6" -numpy = ">=1.16,<2" -Pillow = ">=5" -pyglet = ">=1.5.8,<2" -pyrr = ">=0.10.3,<1" - -[package.extras] -pysdl2 = ["pysdl2"] -pyside2 = ["PySide2 (<6)"] -glfw = ["glfw"] -pygame = ["pygame (>=2.0.1)"] -pyqt5 = ["pyqt5"] -pywavefront = ["pywavefront (>=1.2.0,<2)"] -tk = ["pyopengltk (>=0.0.3)"] -trimesh = ["trimesh (>=3.2.6,<4)", "scipy (>=1.3.2)"] - [[package]] name = "mongoengine" version = "0.24.1" @@ -907,17 +742,6 @@ category = "main" optional = false python-versions = ">=3.7" -[[package]] -name = "multipledispatch" -version = "0.6.0" -description = "Multiple dispatch" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = "*" - [[package]] name = "mypy" version = "0.950" @@ -944,21 +768,6 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "networkx" -version = "2.8.2" -description = "Python package for creating and manipulating graphs and networks" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -default = ["numpy (>=1.19)", "scipy (>=1.8)", "matplotlib (>=3.4)", "pandas (>=1.3)"] -developer = ["pre-commit (>=2.18)", "mypy (>=0.942)"] -doc = ["sphinx (>=4.5)", "pydata-sphinx-theme (>=0.8.1)", "sphinx-gallery (>=0.10)", "numpydoc (>=1.3)", "pillow (>=9.1)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.6)", "pygraphviz (>=1.9)", "pydot (>=1.4.2)", "sympy (>=1.10)"] -test = ["pytest (>=7.1)", "pytest-cov (>=3.0)", "codecov (>=2.1)"] - [[package]] name = "nodeenv" version = "1.6.0" @@ -1140,14 +949,6 @@ category = "dev" optional = false python-versions = "*" -[[package]] -name = "pycairo" -version = "1.21.0" -description = "Python interface for cairo" -category = "main" -optional = false -python-versions = ">=3.7" - [[package]] name = "pycparser" version = "2.21" @@ -1171,14 +972,6 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] -[[package]] -name = "pydub" -version = "0.25.1" -description = "Manipulate audio with an simple and easy high level interface" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "pyee" version = "8.1.0" @@ -1187,19 +980,11 @@ category = "main" optional = false python-versions = "*" -[[package]] -name = "pyglet" -version = "1.5.26" -description = "Cross-platform windowing and multimedia library" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "pygments" version = "2.12.0" description = "Pygments is a syntax highlighting package written in Python." -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -1265,25 +1050,6 @@ category = "dev" optional = false python-versions = ">=3.6" -[[package]] -name = "pyobjc-core" -version = "8.5" -description = "Python<->ObjC Interoperability Module" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "pyobjc-framework-cocoa" -version = "8.5" -description = "Wrappers for the Cocoa frameworks on macOS" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyobjc-core = ">=8.5" - [[package]] name = "pyparsing" version = "3.0.9" @@ -1295,18 +1061,6 @@ python-versions = ">=3.6.8" [package.extras] diagrams = ["railroad-diagrams", "jinja2"] -[[package]] -name = "pyrr" -version = "0.10.3" -description = "3D mathematical functions using NumPy" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -multipledispatch = "*" -numpy = "*" - [[package]] name = "pytest" version = "7.1.2" @@ -1506,7 +1260,7 @@ use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] name = "rich" version = "12.4.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" +category = "dev" optional = false python-versions = ">=3.6.3,<4.0.0" @@ -1543,18 +1297,6 @@ python-versions = ">=3.8,<3.11" [package.dependencies] numpy = ">=1.17.3,<1.25.0" -[[package]] -name = "screeninfo" -version = "0.8" -description = "Fetch location and size of physical screens." -category = "main" -optional = false -python-versions = ">=3.6.2,<4.0.0" - -[package.dependencies] -Cython = {version = "*", markers = "sys_platform == \"darwin\""} -pyobjc-framework-Cocoa = {version = "*", markers = "sys_platform == \"darwin\""} - [[package]] name = "seaborn" version = "0.11.2" @@ -1606,17 +1348,6 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -[[package]] -name = "skia-pathops" -version = "0.7.2" -description = "Python access to operations on paths using the Skia library" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -testing = ["pytest", "coverage", "pytest-xdist", "pytest-randomly"] - [[package]] name = "snakeviz" version = "2.1.1" @@ -1700,14 +1431,6 @@ pydantic = ">=1.8.2,<2.0.0" SQLAlchemy = ">=1.4.17,<1.5.0" sqlalchemy2-stubs = "*" -[[package]] -name = "srt" -version = "3.5.2" -description = "A tiny library for parsing, modifying, and composing SRT files." -category = "main" -optional = false -python-versions = ">=2.7" - [[package]] name = "starlette" version = "0.18.0" @@ -1763,23 +1486,6 @@ category = "main" optional = false python-versions = ">= 3.5" -[[package]] -name = "tqdm" -version = "4.64.0" -description = "Fast, Extensible Progress Meter" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["py-make (>=0.1.0)", "twine", "wheel"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - [[package]] name = "typing-extensions" version = "4.2.0" @@ -1847,17 +1553,6 @@ six = ">=1.9.0,<2" docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] -[[package]] -name = "watchdog" -version = "2.1.8" -description = "Filesystem events monitoring" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - [[package]] name = "watchgod" version = "0.8.2" @@ -1944,7 +1639,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "1b74bef1626f6d7341bfda4a81a0cfa9bf2add0d85b13588f61bfbff6bafda44" +content-hash = "424531595671bfaf85affb9454f6c04f8a09416c83d4898cddc9d62a480cdaa0" [metadata.files] aiocontextvars = [ @@ -2146,25 +1841,14 @@ click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] -click-default-group = [ - {file = "click-default-group-1.2.2.tar.gz", hash = "sha256:d9560e8e8dfa44b3562fbc9425042a0fd6d21956fcc2db0077f63f34253ab904"}, -] cloudpickle = [ {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, ] -cloup = [ - {file = "cloup-0.13.1-py2.py3-none-any.whl", hash = "sha256:04a29a483e122c04f401547dcbce451ce002ff3e392308122619d5b9009f321f"}, - {file = "cloup-0.13.1.tar.gz", hash = "sha256:ea0acc67eed994b86e79b70d76bc2ea525b7f98f3cd8e63696896d549597ef4d"}, -] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] -colour = [ - {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, - {file = "colour-0.1.5.tar.gz", hash = "sha256:af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee"}, -] commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, @@ -2243,56 +1927,10 @@ cycler = [ {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] -cython = [ - {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5cb144728a335d7a7fd0a61dff6abb7a9aeff9acd46d50b886b7d9a95bb7311"}, - {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d52d5733dcb144deca8985f0a197c19cf71e6bd6bd9d8034f3f67b2dea68d12b"}, - {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0cd6c932e945af15ae4ddcf8fdc0532bda48784c92ed0a53cf4fae897067ccd1"}, - {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a30092c6e2d24255fbfe0525f9a750554f96a263ed986d12ac3c9f7d9a85a424"}, - {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:abcaf99f90cddc0f53600613eaafc81d27c4ac0671f0df8bce5466d4e86d54a1"}, - {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9826981308802c61a76f967875b31b7c683b7fc369eabaa6cbc22efeb12c90e8"}, - {file = "Cython-0.29.30-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d166d9f853db436f5e10733a9bd615699ddb4238feadcbdf5ae50dc0b18b18f5"}, - {file = "Cython-0.29.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0b83a342a071c4f14e7410568e0c0bd95e2f20c0b32944e3a721649a1357fda4"}, - {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ffa8c09617833ff0824aa7926fa4fa9d2ec3929c67168e89105f276b7f36a63e"}, - {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6b389a94b42909ff56d3491fde7c44802053a103701a7d210dcdd449a5b4f7b4"}, - {file = "Cython-0.29.30-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:7eff71c39b98078deaad1d1bdbf10864d234e2ab5d5257e980a6926a8523f697"}, - {file = "Cython-0.29.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8e08f18d249b9b65e272a5a60f3360a8922c4c149036b98fc821fe1afad5bdae"}, - {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3993aafd68a7311ef94e00e44a137f6a50a69af0575ebcc8a0a074ad4152a2b2"}, - {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5c7cfd908efc77306ddd41ef07f5a7a352c9205ced5c1e00a0e5ece4391707c4"}, - {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e605635a92ae862cb46d84d1d6883324518f9aaff4a71cede6d61df20b6a410c"}, - {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:786ee7b0cdb508b6de64c0f1f9c74f207186dfafad1ef938f25b7494cc481a80"}, - {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:1e078943bbde703ca08d43e719480eb8b187d9023cbd91798619f5b5e18d0d71"}, - {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5183356c756b56c2df12d96300d602e47ffb89943c5a0bded66faca5d3da7be0"}, - {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e36755e71fd20eceb410cc441b7f2586654c2edb013f4663842fdaf60b96c1ca"}, - {file = "Cython-0.29.30-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e29d3487f357108b711f2f29319811d92166643d29aec1b8e063aad46a346775"}, - {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5a8a3709ad9343a1dc02b8ec9cf6bb284be248d2c64af85464d9c3525eec74a5"}, - {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b17639b6a155abaa61a89f6f1323fb57b138d0529911ca03978d594945d062ba"}, - {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:9462e9cf284d9b1d2c5b53d62188e3c09cc5c7a0018ba349d99b73cf930238de"}, - {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:58d2b734250c1093bc69c1c3a6f5736493b9f8b34eb765f0a28a4a09468c0b00"}, - {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28db751e2d8365b39664d9cb62dc1668688b8fcc5b954e9ca9d20e0b8e03d8b0"}, - {file = "Cython-0.29.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f2dae7dd56860018d5fd5032a71f11fdc224020932b463d0511a1536f27df85"}, - {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d0859a958e0155b6ae4dee04170ccfac2c3d613a7e3bee8749614530b9e3b4a4"}, - {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d0f34b44078e3e0b2f1be2b99044619b37127128e7d55c54bbd2438adcaf31d3"}, - {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:80a7255ad84620f53235c0720cdee2bc7431d9e3db7b3742823a606c329eb539"}, - {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0239c7a22a0f3fb1deec75cab0078eba4dd17868aa992a54a178851e0c8684"}, - {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c299c5b250ae9f81c38200441b6f1d023aeee9d8e7f61c04001c7437181ccb06"}, - {file = "Cython-0.29.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:019d330ac580b2ca4a457c464ac0b8c35009d820ef5d09f328d6e31a10e1ce89"}, - {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:71fd1d910aced510c001936667fc7f2901c49b2ca7a2ad67358979c94a7f42ac"}, - {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:60d370c33d56077d30e5f425026e58c2559e93b4784106f61581cf54071f6270"}, - {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:20778297c8bcba201ca122a2f792a9899d6e64c68a92363dd7eb24306d54d7ce"}, - {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f1fe924c920b699af27aefebd722df4cfbb85206291623cd37d1a7ddfd57792"}, - {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c79685dd4631a188e2385dc6a232896c7b67ea2e3e5f8b5555b4b743f475d6d7"}, - {file = "Cython-0.29.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:88c5e2f92f16cd999ddfc43d572639679e8a057587088e627e98118e46a803e6"}, - {file = "Cython-0.29.30-py2.py3-none-any.whl", hash = "sha256:acb72e0b42079862cf2f894964b41f261e941e75677e902c5f4304b3eb00af33"}, - {file = "Cython-0.29.30.tar.gz", hash = "sha256:2235b62da8fe6fa8b99422c8e583f2fb95e143867d337b5c75e4b9a1a865f9e3"}, -] dataclasses-json = [ {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, ] -decorator = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] dill = [ {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, @@ -2381,46 +2019,6 @@ frozenlist = [ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] -glcontext = [ - {file = "glcontext-2.3.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2eb3c2d7879076a33e801283ab2403788b78e1a45dc89e664a3100b967d471a1"}, - {file = "glcontext-2.3.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:86441e63363dcbb97ee813c9978c1d8998563e76b3726776da04b7be49813be3"}, - {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e613a52a32b9fd5a528981c94b39078064a96380cad91ade4c312340d5404af"}, - {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ba701c46e7b774857b756ac6af15487b917a29dce195e40d834638edaad6f4"}, - {file = "glcontext-2.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861304731c2fa5413e24abc32ac8335e93cf9f8dc7ab767ea69d380d8d503b1b"}, - {file = "glcontext-2.3.6-cp310-cp310-win32.whl", hash = "sha256:cb5b67ffc75ff4a358e8f739d3c65e1bbcc9e75c651dd5945c787d7b9c3ad03f"}, - {file = "glcontext-2.3.6-cp310-cp310-win_amd64.whl", hash = "sha256:032d10008de005b51a2401820356e9f7d51bc9c2a28f8194cc1c345bf1a8a3f9"}, - {file = "glcontext-2.3.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:16bde9cf3bae7129f5308be4a1143db58e68b49b10c77e4e34f9a51cf98fd557"}, - {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25a94ddd93eef639fd0a377b7ebc1ac972978796a2ada74fd5b03b88719d88a"}, - {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a800ba7fd1912f6424bd5979ba596f08308a9e949da73aba942b0a535860170"}, - {file = "glcontext-2.3.6-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bcb5b2ddd21d37f8a1b2aaa62e3952e54a09bc31d29b861a4dcc57a536514f0"}, - {file = "glcontext-2.3.6-cp37-cp37m-win32.whl", hash = "sha256:e646d9c5af3b583f74a586fd151b787314352116e7c06c4902da93e15082bdb4"}, - {file = "glcontext-2.3.6-cp37-cp37m-win_amd64.whl", hash = "sha256:2ac6f80440510473621d287603ef69a08b985c06619f62f42cb485e5ca6e872c"}, - {file = "glcontext-2.3.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b6030d9deedba125d95d39abd72c36fbf6f0a7f866e600f22b210e368afbf522"}, - {file = "glcontext-2.3.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8ca64b73e16712537a95d2e848a13391f83d72f5c19bde5f05562b62b2a1fee6"}, - {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226453bb7ff5a79e88c59ae38b60d1ce002fa2196b19aa8fada147221816e78c"}, - {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48f299b77612b9c80f026204ee3a3062b56cb0776c1d25a6b5ce05fb7e18b261"}, - {file = "glcontext-2.3.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81addba70acbc3fa84ace2b53509c89ff3c7bfe068d1ba2d7d3478140aed2838"}, - {file = "glcontext-2.3.6-cp38-cp38-win32.whl", hash = "sha256:233a9a977d545acf7d2ea1065c986fe6b711948f31499ce5e49e5366eefafa08"}, - {file = "glcontext-2.3.6-cp38-cp38-win_amd64.whl", hash = "sha256:7f114582574c8013fdec09154767b2c3f87875b74ff9938b20d3265971d08971"}, - {file = "glcontext-2.3.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8adc530ecbb0c01c0abcc56ee71c7bcf8799209bff9e5c32f1a1d77f7035468"}, - {file = "glcontext-2.3.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:01106836f02d0098cbcacbc6d0c911f27fa728177d5a651ff44325dfafba7077"}, - {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3f573bde2183943f6161aeb81cad14a2978f143c686dd52253a38cdae7e7667"}, - {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60a982fc78b4400d3b5075f9790977c4d2bdf99824af3cd0428ae5a54437635f"}, - {file = "glcontext-2.3.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64c0425155174fd2faaff7f631d41792365e357484c7f44a6b38efc1ea38468c"}, - {file = "glcontext-2.3.6-cp39-cp39-win32.whl", hash = "sha256:8789947abf3594a11655f23be88481dae0a660bbf8f42e2a5fa95a8fce59ba2c"}, - {file = "glcontext-2.3.6-cp39-cp39-win_amd64.whl", hash = "sha256:22699f81696756ec98fcf8b9a2ebd1dd73a42f81501d7748855e66b63d963c36"}, - {file = "glcontext-2.3.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:970a2769c6aed12e29bd1edbb30a04fa17871a6cf7bb95190e65302c693ce928"}, - {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a30c62c6168b42a32083dc8c967e421f8c346e4452a00809c056ce6c6bea0c4"}, - {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e531662f37d171c08fcdc4ca442468266bef77da14c72c183bcaa2cd80111386"}, - {file = "glcontext-2.3.6-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5dfc4629ed85e51176fc1d8563944e0439b77bc6fe2365cb42207838ea32f"}, - {file = "glcontext-2.3.6-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:41a69166c20b1a67b2652a5074a78078df7e19f36c65d92f6552535a1182d4cc"}, - {file = "glcontext-2.3.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8b118f0361e61e21279e414a1fa759288421ac311e44ce08e718de38f788183"}, - {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4f862f2b4426f1786743448c899d225e8383538602a04c3ffc9622956d08140"}, - {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e59f5afe61c5bc18dc7766c36a0ac912794a53605b30469c6c6be20483f4b42f"}, - {file = "glcontext-2.3.6-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d399cba251b301d94eb7a41017ba68e001673f642606229fba7a0d4183b3273"}, - {file = "glcontext-2.3.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bd50f826bb70df2415c7166d5e0aebdda3e47df8af385f562d8d5ba6018f87e9"}, - {file = "glcontext-2.3.6.tar.gz", hash = "sha256:cdb540eec587deddca037fb4dfdaa0921dcab0fd4d7ea5f1079e44fcb1b81e67"}, -] greenlet = [ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, @@ -2564,10 +2162,6 @@ isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] -isosurfaces = [ - {file = "isosurfaces-0.1.0-py3-none-any.whl", hash = "sha256:a3421f7e7115f72f8f1af538ac4723e5570b1aaa0ddfc6a86520d2d781f3e91f"}, - {file = "isosurfaces-0.1.0.tar.gz", hash = "sha256:fa1b44e5e59d2f429add49289ab89e36f8dcda49b7badd99e0beea273be331f4"}, -] jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, @@ -2672,57 +2266,6 @@ mando = [ {file = "mando-0.6.4-py2.py3-none-any.whl", hash = "sha256:4ce09faec7e5192ffc3c57830e26acba0fd6cd11e1ee81af0d4df0657463bd1c"}, {file = "mando-0.6.4.tar.gz", hash = "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960"}, ] -manim = [ - {file = "manim-0.15.2-py3-none-any.whl", hash = "sha256:79d1a052cf498e18367c48443d2d8f578a0cddad6eded62eaaf8a970f8991e53"}, - {file = "manim-0.15.2.tar.gz", hash = "sha256:ba851ac5e877214c4aae97f28bffe483efe97cb68159480897e13e0b9e9a86a4"}, -] -manimpango = [ - {file = "ManimPango-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc70c1ae3bb853b7244ea2c9b50c908e9d7a93062ec68315872e38771cc66969"}, - {file = "ManimPango-0.4.1-cp310-cp310-win32.whl", hash = "sha256:5228e5326dc52753f4e6855ac4bf9667d78c0005315cddaf74fac5c2a6f87bc3"}, - {file = "ManimPango-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:a83da66451498d6cc3f6e637157ca6c7530b68f9bc0ac6fe043b04bf78c87073"}, - {file = "ManimPango-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb84060069e35bbc220cc9a19658f3e694019a98cee2154fee1171a47bf3db44"}, - {file = "ManimPango-0.4.1-cp37-cp37m-win32.whl", hash = "sha256:02eee359b971d8f900ecb4de0e0023abe1aaec8f5e1c39c663a99a4e2b4425b0"}, - {file = "ManimPango-0.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c59cadd9ed02c0d748fcf294ddb7d158c2ba2a50caa96d6af58ee0bcde327d67"}, - {file = "ManimPango-0.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d36b4df474149e958fadcc31a29cefc90ced6240053fa0e9cd3188a5649eca6b"}, - {file = "ManimPango-0.4.1-cp38-cp38-win32.whl", hash = "sha256:5ed7b089681d1379c4250b070b668079e92d69251491ec8e010c083d21a80775"}, - {file = "ManimPango-0.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:7a0e42e17b2caae12bcd68502befa0e879c8503e6d31cd07e8d819b1e2567718"}, - {file = "ManimPango-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2375739e7a65a7f16e5856b392d930410c194066dd44cf6000d5ef2eb3b7d6f3"}, - {file = "ManimPango-0.4.1-cp39-cp39-win32.whl", hash = "sha256:109f2f5298f7a53354871766b21bc3a40e41eba448030fdcdffb970a295ebf28"}, - {file = "ManimPango-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:ca35af36d490000a7155fdb3aae124bcdfe2a167086c95df0aeee92483f1dce1"}, - {file = "ManimPango-0.4.1.tar.gz", hash = "sha256:f2da037ccdfe174040d3315001cc59bfc7405cd1b1191078bd4db0938005d649"}, -] -mapbox-earcut = [ - {file = "mapbox_earcut-0.12.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:421dbfc321871e66afe9264165848c0d13a37b27156f8a42a642bf5820bafdda"}, - {file = "mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3285f55acc7628cec1a61c551a7225b9c78c4f849c39417c768019b4408f8536"}, - {file = "mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1fdbca4b14564e636e5ffb4c83f49c739bacf49ec590db9ca2c25e9642feb490"}, - {file = "mapbox_earcut-0.12.11-cp310-cp310-win32.whl", hash = "sha256:d26621f4ca8eff937d4539d5d0e59142fd6466ea161791640ea17547394ffc18"}, - {file = "mapbox_earcut-0.12.11-cp310-cp310-win_amd64.whl", hash = "sha256:cbcd8c2831a8ce848842b3e710e57db00cfdd3d7753cc67b1cc61d0c7dd91ca8"}, - {file = "mapbox_earcut-0.12.11-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4c4c55711d7877ea4d2f11d1422c46004121a2b1f4aab6c0b587eab2d87b3a6b"}, - {file = "mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4ebf5f1b3cc7ec0f90eb4f9479b8013da46ece2cf69c887fdfdee6bec1169eb6"}, - {file = "mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d438ef905fb3ec6cb1378c5b169888e0f36a7786354a9a2ae8b8d5e75fe5beee"}, - {file = "mapbox_earcut-0.12.11-cp36-cp36m-win32.whl", hash = "sha256:c9d8d4e61ad67ce5aeac7a948b4bb68bd2126d5fceccaaaf33a625b43225ba45"}, - {file = "mapbox_earcut-0.12.11-cp36-cp36m-win_amd64.whl", hash = "sha256:2357cc3402173b9ba601fe1d2abf55a2fc80a969680981e51fce3bd7524aab6f"}, - {file = "mapbox_earcut-0.12.11-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:83d6a8fc39ef55ddb1f47bd49523b11e7cf9f07292356b93ad18c58473282fd4"}, - {file = "mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2eb7b64ee5b003a71fd1108894fd7a579c87919e7cf5da9f865d5e9694934cd5"}, - {file = "mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64ca3752284345416834e591d9029d50dfa06661208f45d8b7e91f58e2610864"}, - {file = "mapbox_earcut-0.12.11-cp37-cp37m-win32.whl", hash = "sha256:8a90b6773db060474bbc1062c972a18f9dc4ea6940a47fb39090e60f821a9239"}, - {file = "mapbox_earcut-0.12.11-cp37-cp37m-win_amd64.whl", hash = "sha256:d90adb110d45198dcfc2b546648bd23b98737a38c6f0dea0e5949aeae3fca3dd"}, - {file = "mapbox_earcut-0.12.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc3e8b1961f53f7bae3c6818ee7114ba0512aa3c0a8fb61818240ecd02fd22e4"}, - {file = "mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a31f96bc080e2f12fd39172baf891c5050bd56e2f60608d45139fd0ce489f08"}, - {file = "mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dc4c69b2953b1267804f34044c483420f902514ab3cdf02fe454b4fd7192e6a2"}, - {file = "mapbox_earcut-0.12.11-cp38-cp38-win32.whl", hash = "sha256:30c2d30a00ad28d03026dba76de870b2e66fe01a7b340f3cb459b65a4c902ee5"}, - {file = "mapbox_earcut-0.12.11-cp38-cp38-win_amd64.whl", hash = "sha256:6e01b9a9bc15d85e7dcbec52148e9851760a67e097eb63e4bc354e551ab4ae6d"}, - {file = "mapbox_earcut-0.12.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f69ac829ce208bcf85d47e0bf6409b79fc81ae7ca390de3ce2c4e971693328d8"}, - {file = "mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4eff01f3dc0f62ad4ea38da0ef16a242d613aa4efa38eb924677d8427de2e20c"}, - {file = "mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:69da117d3716b5e1f052d7ffc93411a8651bb7c8a7cc41c4ed362e07a45eaae6"}, - {file = "mapbox_earcut-0.12.11-cp39-cp39-win32.whl", hash = "sha256:8faaa8239a6c6db67220a1908b232e0d673c4ba5d06e0943fce0e4d9908ca796"}, - {file = "mapbox_earcut-0.12.11-cp39-cp39-win_amd64.whl", hash = "sha256:4c7c297063c2cd3608d42b174303dfb32f3b9252cf115bed06eb3c64875d3458"}, - {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:96783c3f818f0844d9153a45312142b4e1bda9c284eb4828bba1a9e1fbeb268e"}, - {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a39a27a205189476e6404a855652c834a1cef087207131d3515aff7ac06b1a1f"}, - {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:18cd01be27ec85357e2f9ea0bbe7ce2f71d593966568e5cf12a9b7e19bf0e8d1"}, - {file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6542cc54b330c876e62dad15e98dd4df18e2fd75ffb5b9c84d0629bd085ea123"}, - {file = "mapbox_earcut-0.12.11.tar.gz", hash = "sha256:2808757f8a95eb816d3ce225528c9cb15355afe175f3bcb6837eb7700972e0b9"}, -] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -2814,69 +2357,6 @@ mccabe = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] -moderngl = [ - {file = "moderngl-5.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:186f8ab2b869c56f677dc87de0577a60790fb9306bd5149cedc433a39e9291e5"}, - {file = "moderngl-5.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:de252103b24a8dc40c7f6e1755e29bc9263c33b92141787b50c7ab0266c74906"}, - {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bcfcec3bc3b9a1ee19e94fa524913fd45c37214ea69301a6911e8e53f966029"}, - {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d76b0fb489a5dc6da591b979f8c471bb5b67409afaa9fe4569bc0abf25221f4"}, - {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:792ffe1ec233ed5fcfb0c14955a7f944d64c0d49713ff8b9c5fa3176d96f05c3"}, - {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:1f9ed0bc0d706124a01be2ad59b5774bb3b023e61dcf39faf7c4c7ef4b9f4f75"}, - {file = "moderngl-5.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7c2fce8b7a68f3df9189a19f424478e1d853cfd3e142efd1eb0d4cdf44148d7"}, - {file = "moderngl-5.6.4-cp310-cp310-win32.whl", hash = "sha256:0c6b482f678641e56bd44acecd10eddf74d2cd31e472eff6cca05493cf01e2c9"}, - {file = "moderngl-5.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:28b517fc56c9ab9eb1f5833f7d7b1274d3719b962f95f55ccd8a0f6db884a92b"}, - {file = "moderngl-5.6.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:bc3764d67f037b67051871345a1d0b7a3d2c19cb5c0c0af0a84c532e802d6642"}, - {file = "moderngl-5.6.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:90006d9dfd5333da604a7d26b2a5e70e1a570f291cd745b8bf80e4833d8821b6"}, - {file = "moderngl-5.6.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af44437545380a840dafd09658eb56592831dbd4fb481d320249d0d42c591bae"}, - {file = "moderngl-5.6.4-cp35-cp35m-win32.whl", hash = "sha256:b5023633bcbfbab90be6a6f4edcde75f9c1e244d9acbda94678f3e3fb238b363"}, - {file = "moderngl-5.6.4-cp35-cp35m-win_amd64.whl", hash = "sha256:ffc48fc4deeb525ed33a828d13ca4c12c5af8e5cb0449011f1802e18b5fc3c25"}, - {file = "moderngl-5.6.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:331fd4bce60b10a08eed81a3ed4c70b7c297c38f981fdf3968d03a1c892af247"}, - {file = "moderngl-5.6.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1bd864b5cc2fc1255785e33575cec98fa5ded698503c4f8f3fa9230abeaa3a04"}, - {file = "moderngl-5.6.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b22534529f5bc52c1fe43336787c06d51123ae978fb56e74e47cabd85056c934"}, - {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5151ccf38af80ce8600eac089df1c814eb72aa99c8768307348c1a170104b7e"}, - {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ef57f65c639d12d534dce70e5c08965f0856ac371c669c7586904b8db6453eb"}, - {file = "moderngl-5.6.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0032c07b31bec50b26bba7ee7999e0f697000b31456bfa84391614bb92dba376"}, - {file = "moderngl-5.6.4-cp36-cp36m-win32.whl", hash = "sha256:ee5b1eced39d7f6dc68782c2abf01c1130a40b6d83d333d175ee71adbea7c721"}, - {file = "moderngl-5.6.4-cp36-cp36m-win_amd64.whl", hash = "sha256:52ee915a559762f0e992344961b35e0d241be32f8aa7464494e958f777e0534c"}, - {file = "moderngl-5.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f83f6ab1fafdba2d9c06a7a1c8a4e460689ea1d514146606acc74f14e0831d93"}, - {file = "moderngl-5.6.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c350e06affea9fabc636b2350cf6e58d83ee2e7264527eee0f5d142c167f5463"}, - {file = "moderngl-5.6.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3eb65afc8ec4a1d4a4c48696fb0f4f6cf7a7ada6bef97818d717dbca73c57b11"}, - {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61ec09bb3382d36e5ef3e627e85744b719db1175c3a3fdbadf9acde48eb1aca6"}, - {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b6b30c5a16807d9d2b92f343fcdca8713a88801d8afa985decd302bb6ef7e9"}, - {file = "moderngl-5.6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5eb217b7726511d2382bfdd56b2a8ff5489aa7d1d73bf4f854343b07df286fa9"}, - {file = "moderngl-5.6.4-cp37-cp37m-win32.whl", hash = "sha256:4fd721eb83e73d34c3f7b5a11aec656fef461b51bbe7503b07ea27370c593cbd"}, - {file = "moderngl-5.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:01c71d94dbd59b5d37ead463991e2998c0924426cffa393b9da2b8334551c998"}, - {file = "moderngl-5.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:46e7e03360eafa77159e0d6142904de0d2e9400254414820bbc2d0ca16b14388"}, - {file = "moderngl-5.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2ec6ecd845f21ba44a08c11521cb71f2a9c2ea2ec189b7ed30d17837d392d70"}, - {file = "moderngl-5.6.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:40f74a2246e5302f93f2d46f76c0d2a26cbed1eb29731674c4052476f1e9c9ea"}, - {file = "moderngl-5.6.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5e158e6881034c7e1d0c583d7c82ff608439606f2359dc6098e4be4fd93cef9d"}, - {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eb8fb5efab2716938308732d16d0caf1a195015d84d73f2b73e3adacd228ba6"}, - {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59907d8855dd3ccf1950e8f43f5a1a7cdd93910d8edf538bf52e62098be22360"}, - {file = "moderngl-5.6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8037b6934843000d5fecd2b1933d3894687123fc9afdb19af52a9a628971163d"}, - {file = "moderngl-5.6.4-cp38-cp38-win32.whl", hash = "sha256:a28dc741469eeb69549ee85b4ddbf8e9cfca6a2b19ce0406df9fde20f78082c8"}, - {file = "moderngl-5.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:ce87962b91635d857cac4a753c5d5f647d94dc66dcb0f090bb8d758fd226c3e8"}, - {file = "moderngl-5.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d4c56e15a5fb29de0295891ec3b153e2bd8aeada0c0825135aa5851fa481ff28"}, - {file = "moderngl-5.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3fb139bcdd25eae2c546e5788e9d8719f6c4b18a2ba68a9df31699b4ac57d62d"}, - {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9645afaa1704b2628d8a58be0760243d9954a62902283b176ea00a55b54eafe"}, - {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a3aaa15eb4d43b79e06a46945869feb13f325312ad63666ef2b7d3e216e3a09"}, - {file = "moderngl-5.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a07531c6b0f3da3058bd8927bc6c75eface98ce1416d8be4072b9b11b314b718"}, - {file = "moderngl-5.6.4-cp39-cp39-win32.whl", hash = "sha256:fc5cc1601a3df8f45f1901c6b9960731e0619d1781b0d036e12341fbf2ef55d3"}, - {file = "moderngl-5.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:1c74b71c9acee9f0e69807a086d76e92f37c1960c3bb1d6a6e2472fd03f7be5b"}, - {file = "moderngl-5.6.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1927a52fd3465c508045a1c4a8ea8c793399830d48458d431936f24f8827f136"}, - {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d04747cc9a96f786d04c8a176d5d2cbb51159efd66287d0e676ac674f53e861"}, - {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9092c50a2bb293be770f6f0ae5f1cb940848bf03682696c473a6d3f2c7710d2"}, - {file = "moderngl-5.6.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571e524fde685e21dbe132f4eb7bb223cfc235dc917a4cf122bc44897be18e89"}, - {file = "moderngl-5.6.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ee02dba4b32d7a165a36c797ce495d71deb085a7e29cfa7f1236fa7ccdfc6160"}, - {file = "moderngl-5.6.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0c02fdd386c45ad5d5053a436da64181a7821a042f6665c4ae415edfbdfe244c"}, - {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e2b40f1e11ee5f251a0d564e6a5d285ff91adf361e84f6912fc10959b92bd83"}, - {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1d5f918dda6dc1ec5465d7105b06c5525041fbc368df5d4636145006ce3d303"}, - {file = "moderngl-5.6.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a6bd0e342388b931954671ccf8300ab36cc7d8c991547581efa6df5628bda8b"}, - {file = "moderngl-5.6.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:890caba3795a0288259d76a2cee014c6ffc00619bef179a8d0a87fd9c16a3729"}, - {file = "moderngl-5.6.4.tar.gz", hash = "sha256:8c6d04559f5e3bf75a18525cd46d213c0f3a8409363718978e6de691bdb551fb"}, -] -moderngl-window = [ - {file = "moderngl-window-2.4.1.tar.gz", hash = "sha256:691de764640b87af3d851257be544e1cafddb9cfa47cb144d0c1f1a0ed0a3936"}, - {file = "moderngl_window-2.4.1-py3-none-any.whl", hash = "sha256:5f2aaa6ae8d8a40fcd877febaf7494229c2bf1ef01d3fa9faa3a342075d4126a"}, -] mongoengine = [ {file = "mongoengine-0.24.1-py3-none-any.whl", hash = "sha256:68878b65bcb3751debcba4342180a180161cdb5f46525027e622ad081dd44fac"}, {file = "mongoengine-0.24.1.tar.gz", hash = "sha256:01baac85f408f5eefb6195c0afeae631e7fc6fab5cb221a7b46646f94227d6da"}, @@ -2949,11 +2429,6 @@ multidict = [ {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] -multipledispatch = [ - {file = "multipledispatch-0.6.0-py2-none-any.whl", hash = "sha256:407e6d8c5fa27075968ba07c4db3ef5f02bea4e871e959570eeb69ee39a6565b"}, - {file = "multipledispatch-0.6.0-py3-none-any.whl", hash = "sha256:a55c512128fb3f7c2efd2533f2550accb93c35f1045242ef74645fc92a2c3cba"}, - {file = "multipledispatch-0.6.0.tar.gz", hash = "sha256:a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea"}, -] mypy = [ {file = "mypy-0.950-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cf9c261958a769a3bd38c3e133801ebcd284ffb734ea12d01457cb09eacf7d7b"}, {file = "mypy-0.950-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b5bd0ffb11b4aba2bb6d31b8643902c48f990cc92fda4e21afac658044f0c0"}, @@ -2983,10 +2458,6 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -networkx = [ - {file = "networkx-2.8.2-py3-none-any.whl", hash = "sha256:51d6ae63c24dcd33901357688a2ad20d6bcd38f9a4c5307720048d3a8081059c"}, - {file = "networkx-2.8.2.tar.gz", hash = "sha256:ae99c9b0d35e5b4a62cf1cfea01e5b3633d8d02f4a0ead69685b6e7de5b85eab"}, -] nodeenv = [ {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, @@ -3174,17 +2645,6 @@ py = [ py-cpuinfo = [ {file = "py-cpuinfo-8.0.0.tar.gz", hash = "sha256:5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5"}, ] -pycairo = [ - {file = "pycairo-1.21.0-cp310-cp310-win32.whl", hash = "sha256:44a2ecf34968de07b3b9dfdcdbccbd25aa3cab267200f234f84e81481a73bbf6"}, - {file = "pycairo-1.21.0-cp310-cp310-win_amd64.whl", hash = "sha256:f63c153a9ea3d21aff85e2caeee4b0c5d566b2368b4ed64826020d12953d76a4"}, - {file = "pycairo-1.21.0-cp37-cp37m-win32.whl", hash = "sha256:70936b19f967fa3cb3cd200c2608911227fa5d09dae21c166f64bc15e714ee41"}, - {file = "pycairo-1.21.0-cp37-cp37m-win_amd64.whl", hash = "sha256:31e1c4850db03201d33929cbe1905ce1b33202683ebda7bb0d4dba489115066b"}, - {file = "pycairo-1.21.0-cp38-cp38-win32.whl", hash = "sha256:dace6b356c476de27f8e1522428ac21a799c225703f746e2957d441f885dcb6c"}, - {file = "pycairo-1.21.0-cp38-cp38-win_amd64.whl", hash = "sha256:4357f20a6b1de8f1e8072a74ff68ab4c9a0ae698cd9f5c0f2b2cdd9b28b635f6"}, - {file = "pycairo-1.21.0-cp39-cp39-win32.whl", hash = "sha256:6d37375aab9f2bb6136f076c19815d72108383baae89fbc0d6cb8e5092217d02"}, - {file = "pycairo-1.21.0-cp39-cp39-win_amd64.whl", hash = "sha256:26b72b813c6f9d495f71057eab89c13e70a21c92360e9265abc049e0a931fa39"}, - {file = "pycairo-1.21.0.tar.gz", hash = "sha256:251907f18a552df938aa3386657ff4b5a4937dde70e11aa042bc297957f4b74b"}, -] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -3226,18 +2686,10 @@ pydantic = [ {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, ] -pydub = [ - {file = "pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6"}, - {file = "pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f"}, -] pyee = [ {file = "pyee-8.1.0-py2.py3-none-any.whl", hash = "sha256:383973b63ad7ed5e3c0311f8b179c52981f9e7b3eaea0e9a830d13ec34dde65f"}, {file = "pyee-8.1.0.tar.gz", hash = "sha256:92dacc5bd2bdb8f95aa8dd2585d47ca1c4840e2adb95ccf90034d64f725bfd31"}, ] -pyglet = [ - {file = "pyglet-1.5.26-py3-none-any.whl", hash = "sha256:529b7b1198df3a8399b9621a99ca5e29cd32bb98428bd0e8ba699afa4ba96d2b"}, - {file = "pyglet-1.5.26.zip", hash = "sha256:ee8c5e0b5b87df84188e20e552982eba8da00944b4c5560f1cfdd5c9714d19b0"}, -] pygments = [ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, @@ -3371,32 +2823,10 @@ pynvml = [ {file = "pynvml-11.4.1-py3-none-any.whl", hash = "sha256:d27be542cd9d06558de18e2deffc8022ccd7355bc7382255d477038e7e424c6c"}, {file = "pynvml-11.4.1.tar.gz", hash = "sha256:b2e4a33b80569d093b513f5804db0c7f40cfc86f15a013ae7a8e99c5e175d5dd"}, ] -pyobjc-core = [ - {file = "pyobjc-core-8.5.tar.gz", hash = "sha256:704c275439856c0d1287469f0d589a7d808d48b754a93d9ce5415d4eaf06d576"}, - {file = "pyobjc_core-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0c234143b48334443f5adcf26e668945a6d47bc1fa6223e80918c6c735a029d9"}, - {file = "pyobjc_core-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1486ee533f0d76f666804ce89723ada4db56bfde55e56151ba512d3f849857f8"}, - {file = "pyobjc_core-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:412de06dfa728301c04b3e46fd7453320a8ae8b862e85236e547cd797a73b490"}, - {file = "pyobjc_core-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b3e09cccb1be574a82cc9f929ae27fc4283eccc75496cb5d51534caa6bb83a3"}, - {file = "pyobjc_core-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:eeafe21f879666ab7f57efcc6b007c9f5f8733d367b7e380c925203ed83f000d"}, - {file = "pyobjc_core-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c0071686976d7ea8c14690950e504a13cb22b4ebb2bc7b5ec47c1c1c0f6eff41"}, -] -pyobjc-framework-cocoa = [ - {file = "pyobjc-framework-Cocoa-8.5.tar.gz", hash = "sha256:569bd3a020f64b536fb2d1c085b37553e50558c9f907e08b73ffc16ae68e1861"}, - {file = "pyobjc_framework_Cocoa-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7a7c160416696bf6035dfcdf0e603aaa52858d6afcddfcc5ab41733619ac2529"}, - {file = "pyobjc_framework_Cocoa-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ceba444282030be8596b812260e8d28b671254a51052ad778d32da6e17db847"}, - {file = "pyobjc_framework_Cocoa-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f46b2b161b8dd40c7b9e00bc69636c3e6480b2704a69aee22ee0154befbe163a"}, - {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b31d425aee8698cbf62b187338f5ca59427fa4dca2153a73866f7cb410713119"}, - {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:898359ac1f76eedec8aa156847682378a8950824421c40edb89391286e607dc4"}, - {file = "pyobjc_framework_Cocoa-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:baa2947f76b119a3360973d74d57d6dada87ac527bab9a88f31596af392f123c"}, -] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] -pyrr = [ - {file = "pyrr-0.10.3-py3-none-any.whl", hash = "sha256:d8af23fb9bb29262405845e1c98f7339fbba5e49323b98528bd01160a75c65ac"}, - {file = "pyrr-0.10.3.tar.gz", hash = "sha256:3c0f7b20326e71f706a610d58f2190fff73af01eef60c19cb188b186f0ec7e1d"}, -] pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, @@ -3531,10 +2961,6 @@ scipy = [ {file = "scipy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f"}, {file = "scipy-1.8.1.tar.gz", hash = "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33"}, ] -screeninfo = [ - {file = "screeninfo-0.8-py3-none-any.whl", hash = "sha256:dac455fbed79e82c481d59a00962f543e5a9bf3c2cc9f0e48e2714eb8d3cec23"}, - {file = "screeninfo-0.8.tar.gz", hash = "sha256:9501bf8b8458c7d1be4cb0ac9abddddfa80b932fb3f65bfcb54f5586434b1dc5"}, -] seaborn = [ {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, @@ -3583,42 +3009,6 @@ six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -skia-pathops = [ - {file = "skia-pathops-0.7.2.zip", hash = "sha256:19d85c9afefba15af92b13c8889964f77e6382f58f42c6040b4019eb28cba690"}, - {file = "skia_pathops-0.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8ce9ee85d53fff7c9e444f25ea98b817f87440694babde069df0112d37bf2ed4"}, - {file = "skia_pathops-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:754a37e32e06d0c0affdae3cd7f97496997a07a322d3aaa0964a0bfa0fe84bfc"}, - {file = "skia_pathops-0.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e4e6c792303419848ba8c035f3496faafcf4a23ec0b0c7596eda0c77b5d1500"}, - {file = "skia_pathops-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6b518fca15b4456ddf99062f334c0333a5165be976fb0c9e071af29128583f7"}, - {file = "skia_pathops-0.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:44a3c57c9bcae38fcc438ac6b048ba0c50759994ab466c424c5d7f6812d3a222"}, - {file = "skia_pathops-0.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e35b8962c5b9f10fb40f66708c18cc0bc17e0b0c98230e72514f780a1f42aac9"}, - {file = "skia_pathops-0.7.2-cp310-cp310-win32.whl", hash = "sha256:14172fc2817b7e51d3e6859b435d11c917db68beb11d441aad4b247113c902a8"}, - {file = "skia_pathops-0.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:17ee7f807e434e66cf8398607b696c7d529f1a2416452135a5f327c4e54b511d"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:835b55899665b7fa14e51eb1f2eaa4c0e876bc5965dc92b7e89dc00519620f56"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a58fcde1010a58bd6f251c4f2af2e0a37e281b4e807e295c84dcfb3541fef78b"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28060f7a64fa834b1a88fb053227da30b5c27699dc08aa347a985ac3eced9b5"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a8e7729f32ac87419467efd6858c375fe01da21eb62c8a553c43327ff1cf9d7"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:577371bc51a2b3efdee943b1c2f61af8765b7383bf2bf490968e61c7acb2204d"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-win32.whl", hash = "sha256:bb8d25a0b5659cf1981c90c843b229c836ad0277808b8becbbb2a92972078cbf"}, - {file = "skia_pathops-0.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6b61da9869d11b58bf471b851adc647fe989d625f0ddd02bc78d1cdcd3e0db60"}, - {file = "skia_pathops-0.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:56dbaea031aca9f9e219a42fc454f386b0816d011119da0b7d43d92110e48148"}, - {file = "skia_pathops-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7aa3ec93b5d7b6c4da607453b7b082770756ad6d5346af2dc6a4df061b786eed"}, - {file = "skia_pathops-0.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18fa97eab0e20daf89f57951f2218a8ac42493c7455eee37793e7771c414e28b"}, - {file = "skia_pathops-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:172ddfc3bc573d994bf8d4a6ea1eb35a97976e3959831e306e4eca211c92392b"}, - {file = "skia_pathops-0.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ab02f93bbad07cf249498271c4be885b27aea0b747b769cbfc255e7cb10cc689"}, - {file = "skia_pathops-0.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:24c7cb009ba379a0f4683e66801d752f87f3dcf1c76f57863155aec557042ed3"}, - {file = "skia_pathops-0.7.2-cp38-cp38-win32.whl", hash = "sha256:91c760e780bf99eac3be974d84ec7f61317794ed6deae54a28d2c8d5f61089b6"}, - {file = "skia_pathops-0.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:a0ea795750d0d41c26b158b1018d94a60f78008a77e75f2c56f39e24d5541d68"}, - {file = "skia_pathops-0.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1a14fcaa6902e7f9ba8944e90e532e020b8f9554bd7443daed3caf9d9919cb8"}, - {file = "skia_pathops-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:462abfc5529fd42b433bf5ce88bd1cb1e3d589269f67600472b79feb2be3c081"}, - {file = "skia_pathops-0.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3328815e6bcced0947df374937d51c6a386f260259c1732ff71b1cdd72c3d"}, - {file = "skia_pathops-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1932a387b14c9661f4a578cfd74a71b01436adcc4ef3d0f526b85b7d3f28f2a3"}, - {file = "skia_pathops-0.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c261583734215751b59e12290323a177770002618819ad670acdb5b98b60dff6"}, - {file = "skia_pathops-0.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:50fc18167cbb93b2c57c151289e2773b1db9347ba56d82e35f6fed1bd79a9268"}, - {file = "skia_pathops-0.7.2-cp39-cp39-win32.whl", hash = "sha256:34a8eaace3386880303a564945e292961cfb1cadd06f178b1f959a6a0b8d6c40"}, - {file = "skia_pathops-0.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:1e89d3cc2be2748ba09a06abc5cfe86743c0ec4a16366e34122d9e74e1276204"}, - {file = "skia_pathops-0.7.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bf945cd0df19160c2eb3241db5773c6ca45404dfc661a64a825b93dd9517068"}, - {file = "skia_pathops-0.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9cd88c5bde4a0889ce090d2788eb8db0a6a3ed23c01a77c49cb847739b1257a"}, -] snakeviz = [ {file = "snakeviz-2.1.1-py2.py3-none-any.whl", hash = "sha256:931142dc927101c9a4b6e89bc0577ff1a3d1886b483a04e6af70c31d2c3dce19"}, {file = "snakeviz-2.1.1.tar.gz", hash = "sha256:0d96c006304f095cb4b3fb7ed98bb866ca35a7ca4ab9020bbc27d295ee4c94d9"}, @@ -3677,9 +3067,6 @@ sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, {file = "sqlmodel-0.0.6.tar.gz", hash = "sha256:3b4f966b9671b24d85529d274e6c4dbc7753b468e35d2d6a40bd75cad1f66813"}, ] -srt = [ - {file = "srt-3.5.2.tar.gz", hash = "sha256:7aa4ad5ce4126d3f53b3e7bc4edaa86653d0378bf1c0b1ab8c59f5ab41384450"}, -] starlette = [ {file = "starlette-0.18.0-py3-none-any.whl", hash = "sha256:377d64737a0e03560cb8eaa57604afee143cea5a4996933242798a7820e64f53"}, {file = "starlette-0.18.0.tar.gz", hash = "sha256:b45c6e9a617ecb5caf7e6446bd8d767b0084d6217e8e1b08187ca5191e10f097"}, @@ -3743,10 +3130,6 @@ tornado = [ {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] -tqdm = [ - {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, - {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, -] typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, @@ -3768,33 +3151,6 @@ virtualenv = [ {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, ] -watchdog = [ - {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"}, - {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"}, - {file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"}, - {file = "watchdog-2.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7721ac736170b191c50806f43357407138c6748e4eb3e69b071397f7f7aaeedd"}, - {file = "watchdog-2.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ce7376aed3da5fd777483fe5ebc8475a440c6d18f23998024f832134b2938e7b"}, - {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f9ee4c6bf3a1b2ed6be90a2d78f3f4bbd8105b6390c04a86eb48ed67bbfa0b0b"}, - {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68dbe75e0fa1ba4d73ab3f8e67b21770fbed0651d32ce515cd38919a26873266"}, - {file = "watchdog-2.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0c520009b8cce79099237d810aaa19bc920941c268578436b62013b2f0102320"}, - {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efcc8cbc1b43902571b3dce7ef53003f5b97fe4f275fe0489565fc6e2ebe3314"}, - {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:746e4c197ec1083581bb1f64d07d1136accf03437badb5ff8fcb862565c193b2"}, - {file = "watchdog-2.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ae17b6be788fb8e4d8753d8d599de948f0275a232416e16436363c682c6f850"}, - {file = "watchdog-2.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddde157dc1447d8130cb5b8df102fad845916fe4335e3d3c3f44c16565becbb7"}, - {file = "watchdog-2.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4978db33fc0934c92013ee163a9db158ec216099b69fce5aec790aba704da412"}, - {file = "watchdog-2.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b962de4d7d92ff78fb2dbc6a0cb292a679dea879a0eb5568911484d56545b153"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1e5d0fdfaa265c29dc12621913a76ae99656cf7587d03950dfeb3595e5a26102"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_armv7l.whl", hash = "sha256:036ed15f7cd656351bf4e17244447be0a09a61aaa92014332d50719fc5973bc0"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_i686.whl", hash = "sha256:2962628a8777650703e8f6f2593065884c602df7bae95759b2df267bd89b2ef5"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64.whl", hash = "sha256:156ec3a94695ea68cfb83454b98754af6e276031ba1ae7ae724dc6bf8973b92a"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:47598fe6713fc1fee86b1ca85c9cbe77e9b72d002d6adeab9c3b608f8a5ead10"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_s390x.whl", hash = "sha256:fed4de6e45a4f16e4046ea00917b4fe1700b97244e5d114f594b4a1b9de6bed8"}, - {file = "watchdog-2.1.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:24dedcc3ce75e150f2a1d704661f6879764461a481ba15a57dc80543de46021c"}, - {file = "watchdog-2.1.8-py3-none-win32.whl", hash = "sha256:6ddf67bc9f413791072e3afb466e46cc72c6799ba73dea18439b412e8f2e3257"}, - {file = "watchdog-2.1.8-py3-none-win_amd64.whl", hash = "sha256:88ef3e8640ef0a64b7ad7394b0f23384f58ac19dd759da7eaa9bc04b2898943f"}, - {file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"}, - {file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"}, -] watchgod = [ {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, diff --git a/pyproject.toml b/pyproject.toml index 8a796f45..2adb9c40 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,7 +77,7 @@ matplotlib = "^3.5.2" # Plotting bokeh = "^2.4.3" # Animation -manim = "^0.15.2" +#manim = "^0.15.2" [tool.poetry.dev-dependencies] From dcc68211ac82dfe6b1fbc76214f329a732be9b26 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:40:48 +0200 Subject: [PATCH 055/391] Disable docker for macos --- .github/workflows/python_examples.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 53def0cd..ebce74e6 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -46,10 +46,12 @@ jobs: key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Start MongoDB in docker + if: ${{ matrix.os != 'macos-latest'}} run: | docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:${{ matrix.mongodb-version }} - name: Start Postgres in docker + if: ${{ matrix.os != 'macos-latest'}} run: | docker run --rm -d --name postgresql-container -p 5432:5432 \ -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=changeme postgres:9.6.23-alpine3.14 From b4d134f46cf431715f79ea5a4864559b7694b385 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:44:08 +0200 Subject: [PATCH 056/391] Trigger when workflow yml file changed --- .github/workflows/publish_example_package.yml | 1 + .github/workflows/python_examples.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index 91b6f3a1..c5b98801 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -5,6 +5,7 @@ on: push: paths: - example_package/** + - .github/workflows/publish_example_package.yml pull_request: branches: - master diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index ebce74e6..a61cfdda 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -6,6 +6,7 @@ on: paths: - python_examples/** - poetry.lock + - .github/workflows/python_examples.yml pull_request: branches: - master From de2ff30035d9702228766cfc48caf5a4cc634098 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:56:11 +0200 Subject: [PATCH 057/391] Use ankane/setup-mongodb@v1 --- .github/workflows/python_examples.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index a61cfdda..6b134324 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -19,9 +19,14 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-latest, windows-latest, ubuntu-latest] - python-version: ['3.8', '3.9', '3.10'] + os: [ubuntu-latest] + python-version: ['3.7', '3.8', '3.9', '3.10'] mongodb-version: [5.0.0] + include: + - os: windows-latest + python-version: '3.10' + - os: macos-latest + python-version: '3.10' runs-on: ${{ matrix.os }} @@ -46,10 +51,14 @@ jobs: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - - name: Start MongoDB in docker - if: ${{ matrix.os != 'macos-latest'}} - run: | - docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:${{ matrix.mongodb-version }} + - uses: ankane/setup-mongodb@v1 + with: + mongodb-version: ${{ matrix.mongodb-version }} + +# - name: Start MongoDB in docker +# if: ${{ matrix.os != 'macos-latest'}} +# run: | +# docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:${{ matrix.mongodb-version }} - name: Start Postgres in docker if: ${{ matrix.os != 'macos-latest'}} From 0b3adfbb9ae7cd6d8666cf6dc145d1d450d5d759 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 05:57:24 +0200 Subject: [PATCH 058/391] Replace mongodb version with string --- .github/workflows/python_examples.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 6b134324..ec033b82 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -21,7 +21,6 @@ jobs: matrix: os: [ubuntu-latest] python-version: ['3.7', '3.8', '3.9', '3.10'] - mongodb-version: [5.0.0] include: - os: windows-latest python-version: '3.10' @@ -53,12 +52,12 @@ jobs: - uses: ankane/setup-mongodb@v1 with: - mongodb-version: ${{ matrix.mongodb-version }} + mongodb-version: 5.0.0 # - name: Start MongoDB in docker # if: ${{ matrix.os != 'macos-latest'}} # run: | -# docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:${{ matrix.mongodb-version }} +# docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:5.0.0 - name: Start Postgres in docker if: ${{ matrix.os != 'macos-latest'}} From efbe6ea2bf73fba094750f650bd0ae3eb1a1bd08 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:05:38 +0200 Subject: [PATCH 059/391] Enable python 3.6 --- .github/workflows/python_examples.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index ec033b82..f6de2cd2 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.7', '3.8', '3.9', '3.10'] + python-version: ['3.6', '3.7', '3.8', '3.9', '3.10'] include: - os: windows-latest python-version: '3.10' @@ -50,6 +50,7 @@ jobs: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + - name: Start MongoDB - uses: ankane/setup-mongodb@v1 with: mongodb-version: 5.0.0 @@ -59,11 +60,16 @@ jobs: # run: | # docker run --rm -d -p 27017-27019:27017-27019 --name mongodb mongo:5.0.0 - - name: Start Postgres in docker - if: ${{ matrix.os != 'macos-latest'}} - run: | - docker run --rm -d --name postgresql-container -p 5432:5432 \ - -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=changeme postgres:9.6.23-alpine3.14 + - name: Start Postgres + uses: ankane/setup-postgres@v1 + with: + postgres-version: 14 + +# - name: Start Postgres in docker +# if: ${{ matrix.os == 'ubuntu-latest'}} +# run: | +# docker run --rm -d --name postgresql-container -p 5432:5432 \ +# -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=changeme postgres:9.6.23-alpine3.14 - name: Print environment variables (linux) run: | From db63149b60176aedd4ae90f136e8cc3981efc713 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:06:01 +0200 Subject: [PATCH 060/391] Fix yml --- .github/workflows/python_examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index f6de2cd2..ee8cb5a8 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -51,7 +51,7 @@ jobs: key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Start MongoDB - - uses: ankane/setup-mongodb@v1 + uses: ankane/setup-mongodb@v1 with: mongodb-version: 5.0.0 From 66c7bf4c8a02961c6cb270173610f98a3bb36ea1 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:09:45 +0200 Subject: [PATCH 061/391] Enable python 3.5, disable macos --- .github/workflows/python_examples.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index ee8cb5a8..b64fb578 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -20,12 +20,11 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.6', '3.7', '3.8', '3.9', '3.10'] + python-version: ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] include: + # macos-latest runner seems to be too slow for tests - os: windows-latest python-version: '3.10' - - os: macos-latest - python-version: '3.10' runs-on: ${{ matrix.os }} From d4a36fd1bd7e0a1d73c8e5b095804300e534db71 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:14:41 +0200 Subject: [PATCH 062/391] Enable more python versions --- .github/workflows/python_examples.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index b64fb578..de1afa83 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -20,11 +20,13 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] + python-version: ['3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] include: # macos-latest runner seems to be too slow for tests - os: windows-latest python-version: '3.10' + - os: ubuntu-latest + python-version: '3.11.0-beta.1' runs-on: ${{ matrix.os }} From a6d74a89d4d1a1dd4de5308503ede9285fb95c92 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:29:07 +0200 Subject: [PATCH 063/391] Remove python versions again --- .github/workflows/python_examples.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index de1afa83..0c6cb4d6 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -20,13 +20,13 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] + python-version: ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] include: # macos-latest runner seems to be too slow for tests - - os: windows-latest - python-version: '3.10' - os: ubuntu-latest python-version: '3.11.0-beta.1' + - os: windows-latest + python-version: '3.10' runs-on: ${{ matrix.os }} From 5ec3321dcf98f222c64a07a873e69d87a1faea3b Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:35:09 +0200 Subject: [PATCH 064/391] Update actions/setup-python version to 2 --- .github/workflows/publish_example_package.yml | 2 +- .github/workflows/test_fastapi_server.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index c5b98801..6cd6b395 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 0167ab52..b616e32d 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -27,7 +27,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 528faecd..50b5ef49 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -77,7 +77,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} @@ -145,7 +145,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} From 0c98c35d05cf94cf9c9bf78cf344ce5f9bab3422 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:39:03 +0200 Subject: [PATCH 065/391] Increase deadline of test --- .github/workflows/python_examples.yml | 3 ++- python_examples/examples/other/test_roman_numbers.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 0c6cb4d6..1ab0b69b 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -22,9 +22,10 @@ jobs: os: [ubuntu-latest] python-version: ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] include: - # macos-latest runner seems to be too slow for tests - os: ubuntu-latest python-version: '3.11.0-beta.1' + - os: macos-latest + python-version: '3.10' - os: windows-latest python-version: '3.10' diff --git a/python_examples/examples/other/test_roman_numbers.py b/python_examples/examples/other/test_roman_numbers.py index f3e0160a..bdbdb214 100644 --- a/python_examples/examples/other/test_roman_numbers.py +++ b/python_examples/examples/other/test_roman_numbers.py @@ -1,12 +1,13 @@ # This test code was written by the `hypothesis.extra.ghostwriter` module # and is provided under the Creative Commons Zero public domain dedication. -from hypothesis import given +from hypothesis import given, settings from hypothesis import strategies as st import python_examples.examples.other.roman_numbers +@settings(deadline=1000) @given(n=st.integers(min_value=1, max_value=4000)) def test_fuzz_generate_roman_number(n): python_examples.examples.other.roman_numbers.generate_roman_number(n=n) From d141d412048e3f5f7eda3d48fd65a113c176ab4a Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 06:42:36 +0200 Subject: [PATCH 066/391] Add comma --- poetry.lock | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7fd5a891..dc460bbc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1638,8 +1638,8 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" -python-versions = ">=3.8 <3.11" -content-hash = "424531595671bfaf85affb9454f6c04f8a09416c83d4898cddc9d62a480cdaa0" +python-versions = ">=3.8, <3.11" +content-hash = "3dac9866a2761ac0941f765b57fa945eaad6d88f506567e31f4adfdb524cf359" [metadata.files] aiocontextvars = [ diff --git a/pyproject.toml b/pyproject.toml index 2adb9c40..bf07aef0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "" authors = ["BuRny "] [tool.poetry.dependencies] -python = ">=3.8 <3.11" +python = ">=3.8, <3.11" # Numeric python numpy = "^1.21" # Write and read classes to/from json From 18b290be89175642021c7e60617257a1dde321ef Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:24:16 +0200 Subject: [PATCH 067/391] Update cache version from 2 to 3 --- .github/workflows/publish_example_package.yml | 4 ++-- .github/workflows/python_examples.yml | 2 +- .github/workflows/test_bored_gems.yml | 2 +- .github/workflows/test_fastapi_server.yml | 2 +- .github/workflows/test_replay_comparer.yml | 2 +- .github/workflows/test_supabase_stream_scripts.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 12 ++++++------ 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index 6cd6b395..a4f1da6e 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -38,13 +38,13 @@ jobs: run: poetry config virtualenvs.in-project true - name: Cache poetry - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cache/pypoetry/virtualenvs key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Set up cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 1ab0b69b..4deeb0ba 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -47,7 +47,7 @@ jobs: run: poetry config virtualenvs.in-project true - name: Cache poetry - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index e80d462f..deadae42 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -31,7 +31,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index b616e32d..77f860c7 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -39,7 +39,7 @@ jobs: run: poetry config virtualenvs.in-project true - name: Set up cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index e390d195..b1d8eee8 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -34,7 +34,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 59a8bec0..01a7174e 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -31,7 +31,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 50b5ef49..5f66d219 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -34,7 +34,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} @@ -82,7 +82,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Set up cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} @@ -95,7 +95,7 @@ jobs: run: poetry config virtualenvs.in-project true - name: Set up cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} @@ -110,7 +110,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} @@ -157,7 +157,7 @@ jobs: run: poetry config virtualenvs.in-project true - name: Set up cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} @@ -172,7 +172,7 @@ jobs: node-version: ${{ matrix.node }} - name: Cache npm - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.npm key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} From 9a556ecdd161d3623c0723906011b3119b7f7302 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:38:16 +0200 Subject: [PATCH 068/391] Use 'python --version' as cache key --- .github/workflows/python_examples.yml | 6 ++---- python_examples/main.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 4deeb0ba..942acf23 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -20,10 +20,8 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] + python-version: ['3.8', '3.9', '3.10'] include: - - os: ubuntu-latest - python-version: '3.11.0-beta.1' - os: macos-latest python-version: '3.10' - os: windows-latest @@ -50,7 +48,7 @@ jobs: uses: actions/cache@v3 with: path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Start MongoDB uses: ankane/setup-mongodb@v1 diff --git a/python_examples/main.py b/python_examples/main.py index 9243d224..6c668d13 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -57,7 +57,7 @@ async def main(): regex_match_test() - sites: List[str] = ['http://www.jython.org', 'http://olympus.realpython.org/dice'] * 80 + sites: List[str] = ['http://www.jython.org', 'https://www.python.org/'] * 80 start_time = time.perf_counter() await download_all_sites(sites) From 7b91de8ffe627b1001871a5496a760306a71a5d7 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:42:38 +0200 Subject: [PATCH 069/391] Use 'python --version' as cache key for other yml files --- .github/workflows/publish_example_package.yml | 8 +------- .github/workflows/python_examples.yml | 2 +- .github/workflows/test_fastapi_server.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 10 ++-------- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index a4f1da6e..c72df2a0 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -37,17 +37,11 @@ jobs: - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true - - name: Cache poetry - uses: actions/cache@v3 - with: - path: ~/.cache/pypoetry/virtualenvs - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - - name: Set up cache uses: actions/cache@v3 with: path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install dependencies run: | diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 942acf23..3d8a416e 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -44,7 +44,7 @@ jobs: - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true - - name: Cache poetry + - name: Set up cache uses: actions/cache@v3 with: path: .venv diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 77f860c7..38ced538 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -42,7 +42,7 @@ jobs: uses: actions/cache@v3 with: path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies run: | diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 5f66d219..e0810a0b 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -81,12 +81,6 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Set up cache - uses: actions/cache@v3 - with: - path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - - name: Install Poetry run: | pip install poetry @@ -98,7 +92,7 @@ jobs: uses: actions/cache@v3 with: path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies run: | @@ -160,7 +154,7 @@ jobs: uses: actions/cache@v3 with: path: .venv - key: ${{ matrix.os }}-${{ matrix.python-version }}-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies run: | From 1ecb4e5afd4329c3dbbc0018609bef61b454b7ec Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:44:28 +0200 Subject: [PATCH 070/391] Increase deadline for hypothesis test --- python_examples/discrete_structures/test_primes.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python_examples/discrete_structures/test_primes.py b/python_examples/discrete_structures/test_primes.py index 9c1a2c04..baa0a825 100644 --- a/python_examples/discrete_structures/test_primes.py +++ b/python_examples/discrete_structures/test_primes.py @@ -1,7 +1,7 @@ # This test code was written by the `hypothesis.extra.ghostwriter` module # and is provided under the Creative Commons Zero public domain dedication. -from hypothesis import given +from hypothesis import given, settings from hypothesis import strategies as st import python_examples.discrete_structures.primes @@ -22,6 +22,7 @@ def test_fuzz_prime_factors(n, primes): python_examples.discrete_structures.primes.prime_factors(n=n, primes=primes) +@settings(max_examples=20, deadline=2_000) @given(limit=st.integers(min_value=1, max_value=10**6)) def test_fuzz_sieve_of_eratosthenes(limit): python_examples.discrete_structures.primes.sieve_of_eratosthenes(limit=limit) From 22969eb3bf0897cea127ac7882675194b8081c0e Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:49:38 +0200 Subject: [PATCH 071/391] Use actions/setup-node@v3 --- .github/workflows/test_bored_gems.yml | 2 +- .github/workflows/test_replay_comparer.yml | 2 +- .github/workflows/test_supabase_stream_scripts.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index deadae42..8b3b1476 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index b1d8eee8..a9283669 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 01a7174e..9bdb71a2 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index e0810a0b..6ea25c07 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} @@ -99,7 +99,7 @@ jobs: poetry install - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} @@ -161,7 +161,7 @@ jobs: poetry install - name: Set up Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} From d551b3e63eac5a95b5475e92d50c48c0ce3fc161 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 26 May 2022 22:57:03 +0200 Subject: [PATCH 072/391] Enable node version 18 --- .github/workflows/test_bored_gems.yml | 2 +- .github/workflows/test_replay_comparer.yml | 2 +- .github/workflows/test_supabase_stream_scripts.yml | 2 +- .github/workflows/test_svelte_frontend.yml | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index 8b3b1476..b1109117 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['14', '16'] + node: ['16', '18'] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index a9283669..00f8b5c4 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['12', '14', '16'] + node: ['12', '14', '16', '18'] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index 9bdb71a2..b866d3a8 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['12', '14', '16'] + node: ['12', '14', '16', '18'] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 6ea25c07..ae917e3f 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['14', '16'] + node: ['14', '16', '18'] runs-on: ${{ matrix.os }} steps: @@ -70,7 +70,7 @@ jobs: matrix: os: [ubuntu-latest] python-version: [3.9] - node: ['16'] + node: ['16', '18'] runs-on: ${{ matrix.os }} steps: @@ -132,7 +132,7 @@ jobs: matrix: os: [ubuntu-latest] python-version: ['3.9'] - node: ['16'] + node: ['16', '18'] runs-on: ${{ matrix.os }} steps: From c2ef32763679dfa5a80b32cced2cc3644e9f542b Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 27 May 2022 00:57:01 +0200 Subject: [PATCH 073/391] Use 'working-directory' in github actions --- .github/workflows/test_svelte_frontend.yml | 24 +++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index ae917e3f..2a1f7d76 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -14,16 +14,20 @@ on: - master - develop +env: + SUBDIRECTORY: svelte_frontend + jobs: test_svelte_frontend: - env: - SUBDIRECTORY: svelte_frontend strategy: fail-fast: false matrix: os: [ubuntu-latest] node: ['14', '16', '18'] runs-on: ${{ matrix.os }} + defaults: + run: + working-directory: ${{ env.SUBDIRECTORY }} steps: - uses: actions/checkout@v2 @@ -41,30 +45,24 @@ jobs: - name: Install npm dependencies run: | - cd ${{ env.SUBDIRECTORY }} npm install - name: Run build command run: | - cd ${{ env.SUBDIRECTORY }} npm run build - name: Install playwright browsers run: | - cd ${{ env.SUBDIRECTORY }} npx playwright install if: ${{ matrix.node != '14' }} - name: Run tests run: | - cd ${{ env.SUBDIRECTORY }} npm run test if: ${{ matrix.node != '14' }} test_e2e: - env: - SUBDIRECTORY: svelte_frontend strategy: fail-fast: false matrix: @@ -110,13 +108,13 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm install - name: Install playwright browsers + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} poetry run playwright install - name: Run e2e tests @@ -125,8 +123,6 @@ jobs: test_integration: - env: - SUBDIRECTORY: svelte_frontend strategy: fail-fast: false matrix: @@ -172,13 +168,13 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm install - name: Install playwright browsers + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} poetry run playwright install - name: Run integration tests From c4e9d0267a4e6167326cb123c98fa7cf5d7c3a03 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 27 May 2022 01:10:30 +0200 Subject: [PATCH 074/391] Use 'working-directory' in all workflows, make env globally available --- .github/workflows/publish_example_package.yml | 12 ++++++------ .github/workflows/python_examples.yml | 5 +++-- .github/workflows/test_bored_gems.yml | 17 +++++++++-------- .github/workflows/test_fastapi_server.yml | 14 +++++++------- .github/workflows/test_replay_comparer.yml | 11 ++++++----- .../workflows/test_supabase_stream_scripts.yml | 12 +++++++----- .github/workflows/test_svelte_frontend.yml | 13 +++++++------ 7 files changed, 45 insertions(+), 39 deletions(-) diff --git a/.github/workflows/publish_example_package.yml b/.github/workflows/publish_example_package.yml index c72df2a0..afca8a16 100644 --- a/.github/workflows/publish_example_package.yml +++ b/.github/workflows/publish_example_package.yml @@ -1,6 +1,5 @@ name: publish_example_package - on: push: paths: @@ -11,10 +10,11 @@ on: - master - develop +env: + SUBDIRECTORY: example_package + jobs: build_and_publish: - env: - SUBDIRECTORY: example_package strategy: fail-fast: false matrix: @@ -44,19 +44,19 @@ jobs: key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | pip install poetry - cd ${{ env.SUBDIRECTORY }} poetry install --no-dev - name: Build + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} poetry build # Publish package on pypi - name: Publish + working-directory: ${{ env.SUBDIRECTORY }} continue-on-error: true run: | - cd ${{ env.SUBDIRECTORY }} poetry publish --username ${{ secrets.pypi_username }} --password ${{ secrets.pypi_password }} diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 3d8a416e..446d9708 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -12,10 +12,11 @@ on: - master - develop +env: + SUBDIRECTORY: python_examples + jobs: run_python_examples: - env: - SUBDIRECTORY: python_examples strategy: fail-fast: false matrix: diff --git a/.github/workflows/test_bored_gems.yml b/.github/workflows/test_bored_gems.yml index b1109117..7672e5bf 100644 --- a/.github/workflows/test_bored_gems.yml +++ b/.github/workflows/test_bored_gems.yml @@ -11,10 +11,11 @@ on: - master - develop +env: + SUBDIRECTORY: bored_gems + jobs: test_supabase_stream_scripts: - env: - SUBDIRECTORY: bored_gems strategy: fail-fast: false matrix: @@ -37,23 +38,23 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm install - name: Run build command + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm run build - name: Install playwright browsers + if: ${{ matrix.node != '14' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npx playwright install - if: ${{ matrix.node != '14' }} - name: Run tests + if: ${{ matrix.node != '14' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm run test - if: ${{ matrix.node != '14' }} diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 38ced538..11071514 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -12,10 +12,11 @@ on: - master - develop +env: + SUBDIRECTORY: fastapi_server + jobs: test_backend: - env: - SUBDIRECTORY: fastapi_server strategy: fail-fast: false matrix: @@ -45,13 +46,13 @@ jobs: key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} poetry install - name: Run Python tests + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} poetry run pytest deploy_backend: @@ -62,7 +63,6 @@ jobs: needs: [test_backend] env: USERNAME: fastapiserver - SUBDIRECTORY: fastapi_server if: github.ref == 'refs/heads/develop' steps: @@ -70,7 +70,7 @@ jobs: - name: Deploy backend run: | - rm -rf fastapi_server/data + rm -rf ${{ env.SUBDIRECTORY }}/data - name: Stop services uses: appleboy/ssh-action@master @@ -108,6 +108,6 @@ jobs: cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml echo -e "STAGE=prod\n" > .env poetry install --no-dev - cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/fastapi_server/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" + cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable --now ${{ env.USERNAME }} diff --git a/.github/workflows/test_replay_comparer.yml b/.github/workflows/test_replay_comparer.yml index 00f8b5c4..8bcc4882 100644 --- a/.github/workflows/test_replay_comparer.yml +++ b/.github/workflows/test_replay_comparer.yml @@ -14,10 +14,11 @@ on: - master - develop +env: + SUBDIRECTORY: replay_comparer + jobs: test_replay_comparer: - env: - SUBDIRECTORY: replay_comparer strategy: fail-fast: false matrix: @@ -40,15 +41,15 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm install --production - name: Run build command + if: ${{ matrix.node != '12' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm run build - if: ${{ matrix.node != '12' }} # - name: Run tests # run: | diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index b866d3a8..d3bb6d99 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -11,10 +11,11 @@ on: - master - develop +env: + SUBDIRECTORY: supabase_stream_scripts + jobs: test_supabase_stream_scripts: - env: - SUBDIRECTORY: supabase_stream_scripts strategy: fail-fast: false matrix: @@ -37,18 +38,19 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm install - name: Run build command + if: ${{ matrix.node != '12' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | cd ${{ env.SUBDIRECTORY }} npm run build - if: ${{ matrix.node != '12' }} - name: Run tests + working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} rm tsconfig.json npm run test diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 2a1f7d76..e6ddbc8c 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -25,9 +25,6 @@ jobs: os: [ubuntu-latest] node: ['14', '16', '18'] runs-on: ${{ matrix.os }} - defaults: - run: - working-directory: ${{ env.SUBDIRECTORY }} steps: - uses: actions/checkout@v2 @@ -44,22 +41,26 @@ jobs: key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} - name: Install npm dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | npm install - name: Run build command + working-directory: ${{ env.SUBDIRECTORY }} run: | npm run build - name: Install playwright browsers + if: ${{ matrix.node != '14' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | npx playwright install - if: ${{ matrix.node != '14' }} - name: Run tests + if: ${{ matrix.node != '14' }} + working-directory: ${{ env.SUBDIRECTORY }} run: | npm run test - if: ${{ matrix.node != '14' }} test_e2e: @@ -141,7 +142,7 @@ jobs: - name: Install Poetry run: | - python -m pip install poetry + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true From cfe6afa87018c2c827cd830f770a9687fa95bdc6 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 27 May 2022 17:37:56 +0200 Subject: [PATCH 075/391] Add mass replace test and add plot data post clean up --- .github/workflows/python_examples.yml | 8 ++-- .../examples/other/mass_replace.py | 24 ++++++++++ .../examples/other/test_mass_replace.py | 45 +++++++++++++++++++ .../examples/plot_data/clean_up.py | 16 +++++++ python_examples/main.py | 18 +++----- python_examples/run.py | 3 +- 6 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 python_examples/examples/other/mass_replace.py create mode 100644 python_examples/examples/other/test_mass_replace.py create mode 100644 python_examples/examples/plot_data/clean_up.py diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 446d9708..110896c7 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -23,10 +23,10 @@ jobs: os: [ubuntu-latest] python-version: ['3.8', '3.9', '3.10'] include: - - os: macos-latest - python-version: '3.10' - - os: windows-latest - python-version: '3.10' + - os: macos-latest + python-version: '3.10' + - os: windows-latest + python-version: '3.10' runs-on: ${{ matrix.os }} diff --git a/python_examples/examples/other/mass_replace.py b/python_examples/examples/other/mass_replace.py new file mode 100644 index 00000000..50ee7c20 --- /dev/null +++ b/python_examples/examples/other/mass_replace.py @@ -0,0 +1,24 @@ +import re +from typing import Dict + +from loguru import logger + + +def mass_replacer(text: str, replace_dict: Dict[str, str]) -> str: + # Source: https://stackoverflow.com/a/6117124 + # In case there is escape characters in k, it will not work without "re.escape" + replace_dict = {re.escape(k): v for k, v in replace_dict.items()} + pattern = re.compile('|'.join(replace_dict.keys())) + new_text = pattern.sub(lambda m: replace_dict[re.escape(m.group(0))], text) + return new_text + + +def main(): + text = 'my text cond\nition1 condition2' + replace_dict = {'cond\nition1': 'loves', 'condition2': 'fun'} + new_text = mass_replacer(text, replace_dict) + logger.info(f'Mass replaced\n"{text}"\nto\n{new_text}') + + +if __name__ == '__main__': + main() diff --git a/python_examples/examples/other/test_mass_replace.py b/python_examples/examples/other/test_mass_replace.py new file mode 100644 index 00000000..3152e22b --- /dev/null +++ b/python_examples/examples/other/test_mass_replace.py @@ -0,0 +1,45 @@ +from hypothesis import given +from hypothesis import strategies as st + +from python_examples.examples.other.mass_replace import mass_replacer + + +def test_example_text(): + text = 'my text cond\nition1 condition2' + replace_dict = {'cond\nition1': 'loves', 'condition2': 'fun'} + + new_text = mass_replacer(text, replace_dict) + assert new_text == 'my text loves fun' + + +@given( + st.text(), + st.text(), + st.text(), + st.text(), +) +def test_many_texts( + w1: str, + w2: str, + w3: str, + w4: str, +): + if w1 == w2 or w1 in w2 or w2 in w1: + # Unexpected behavior when both keys are the same + # or one key is contained in the other + return + + text = f'{w1} {w2} {w1} {w2} {w2}' + replace_dict = { + w1: w3, + w2: w4, + } + new_text = mass_replacer(text, replace_dict) + expected_text = f'{w3} {w4} {w3} {w4} {w4}' + assert new_text == expected_text + + # The following may fail + # new_text_with_replace1 = text.replace(w1, w2).replace(w3, w4) + # assert new_text_with_replace1 == expected_text + # new_text_with_replace2 = text.replace(w3, w4).replace(w1, w2) + # assert new_text_with_replace2 == expected_text diff --git a/python_examples/examples/plot_data/clean_up.py b/python_examples/examples/plot_data/clean_up.py new file mode 100644 index 00000000..513576d2 --- /dev/null +++ b/python_examples/examples/plot_data/clean_up.py @@ -0,0 +1,16 @@ +import os +from pathlib import Path + +DIRECTORY = Path(__file__).parent + + +def main(): + for file in DIRECTORY.iterdir(): + if not file.is_file(): + continue + if file.suffix in {'.html', '.png'}: + os.remove(file) + + +if __name__ == '__main__': + main() diff --git a/python_examples/main.py b/python_examples/main.py index 6c668d13..d3d55503 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -10,7 +10,6 @@ # Other # Coroutines and multiprocessing import asyncio -import re import time # Type annotation / hints @@ -34,9 +33,11 @@ from python_examples.examples.other.file_interaction import create_file from python_examples.examples.other.geometry_example import test_geometry_shapely from python_examples.examples.other.image_manipulation import mass_convert_images +from python_examples.examples.other.mass_replace import main as mass_replace_main from python_examples.examples.other.multiprocessing_example import do_math, do_multiprocessing from python_examples.examples.other.regex_example import regex_match_test, test_all_roman_numbers from python_examples.examples.plot_data.bokeh_plot import main as bokeh_plot_main +from python_examples.examples.plot_data.clean_up import main as clean_up_main from python_examples.examples.plot_data.matplotlib_plot import main as matplotlib_plot_main from python_examples.examples.plot_data.pandas_plot import main as pandas_plot_main from python_examples.examples.plot_data.seaborn_plot import main as seaborn_plot_main @@ -84,7 +85,7 @@ async def main(): end_time = time.perf_counter() logger.info(f'Time for multiprocessing taken: {end_time - start_time}') - mass_replace() + mass_replace_main() logger.info('Creating hello world file...') create_file() @@ -111,16 +112,8 @@ async def main(): test_database_with_sqlmodel() await test_database_with_mongodb() - -def mass_replace(): - # Source: https://stackoverflow.com/a/6117124 - text = 'my text cond\nition1 condition2' - replace_dict = {'cond\nition1': 'loves', 'condition2': 'fun'} - # In case there is escape characters in k, it will not work without "re.escape" - replace_dict = {re.escape(k): v for k, v in replace_dict.items()} - pattern = re.compile('|'.join(replace_dict.keys())) - new_text = pattern.sub(lambda m: replace_dict[re.escape(m.group(0))], text) - logger.info(f'Mass replaced\n{text}\nto\n{new_text}') + logger.info('Test plotting data') + plot_data() def plot_data(): @@ -128,6 +121,7 @@ def plot_data(): bokeh_plot_main() pandas_plot_main() seaborn_plot_main() + clean_up_main() if __name__ == '__main__': diff --git a/python_examples/run.py b/python_examples/run.py index 72db5a15..1ea839a9 100644 --- a/python_examples/run.py +++ b/python_examples/run.py @@ -81,8 +81,7 @@ async def main(): if __name__ == '__main__': try: with BotRunner() as runner: - loop = asyncio.get_event_loop() - loop.run_until_complete(main()) + asyncio.run(main()) # pylint: disable=W0703 except Exception as e: logger.trace(e) From 65d004daf27d95c894a026dfd681caff69829704 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 27 May 2022 17:43:20 +0200 Subject: [PATCH 076/391] Fix paths in plot data --- .../examples/plot_data/bokeh_plot.py | 15 ++++---- .../examples/plot_data/matplotlib_plot.py | 20 ++++++----- .../examples/plot_data/pandas_plot.py | 34 +++++++++++-------- .../examples/plot_data/seaborn_plot.py | 18 +++++----- 4 files changed, 50 insertions(+), 37 deletions(-) diff --git a/python_examples/examples/plot_data/bokeh_plot.py b/python_examples/examples/plot_data/bokeh_plot.py index 3b210f11..28ca6c5b 100644 --- a/python_examples/examples/plot_data/bokeh_plot.py +++ b/python_examples/examples/plot_data/bokeh_plot.py @@ -1,4 +1,5 @@ from math import pi +from pathlib import Path import numpy as np import pandas as pd @@ -8,6 +9,8 @@ from bokeh.transform import cumsum, linear_cmap from bokeh.util.hex import axial_to_cartesian, hexbin +CURRENT_DIRECTORY = Path(__file__).parent + def plot_01(): p = figure(width=400, height=400) @@ -18,7 +21,7 @@ def plot_01(): top=[1.2, 2.5, 3.7], color='firebrick', ) - output_file('bokeh_vbar.html') + output_file(CURRENT_DIRECTORY / 'bokeh_vbar.html') save(p) # Open in browser # show(p) @@ -37,7 +40,7 @@ def plot_02(): x, y = axial_to_cartesian(q, r, 1, 'pointytop') p.text(x, y, text=[f'({q}, {r})' for (q, r) in zip(q, r)], text_baseline='middle', text_align='center') - output_file('bokeh_hex_coords.html') + output_file(CURRENT_DIRECTORY / 'bokeh_hex_coords.html') save(p) @@ -60,7 +63,7 @@ def plot_03(): fill_color=linear_cmap('counts', 'Viridis256', 0, max(bins.counts)) ) - output_file('bokeh_hex_tile.html') + output_file(CURRENT_DIRECTORY / 'bokeh_hex_tile.html') save(p) @@ -79,7 +82,7 @@ def plot_04(): color=['blue', 'red'] ) - output_file('bokeh_multipolygons.html') + output_file(CURRENT_DIRECTORY / 'bokeh_multipolygons.html') save(p) @@ -95,7 +98,7 @@ def plot_05(): p.image(image=[d], x=0, y=0, dw=10, dh=10, palette='Spectral11', level='image') p.grid.grid_line_width = 0.5 - output_file('bokeh_image.html', title='image.py example') + output_file(CURRENT_DIRECTORY / 'bokeh_image.html', title='image.py example') save(p) @@ -144,7 +147,7 @@ def plot_06(): p.axis.visible = False p.grid.grid_line_color = None - output_file('bokeh_piechart.html') + output_file(CURRENT_DIRECTORY / 'bokeh_piechart.html') save(p) diff --git a/python_examples/examples/plot_data/matplotlib_plot.py b/python_examples/examples/plot_data/matplotlib_plot.py index 92bda51c..353de456 100644 --- a/python_examples/examples/plot_data/matplotlib_plot.py +++ b/python_examples/examples/plot_data/matplotlib_plot.py @@ -1,18 +1,22 @@ +from pathlib import Path + import matplotlib.pyplot as plt import numpy as np +CURRENT_DIRECTORY = Path(__file__).parent + def plot_01(): plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') # Display plot in Pycharm or terminal # plt.show() - plt.savefig('matplotlib_plot_01.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_01.png') def plot_02(): plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) - plt.savefig('matplotlib_plot_02.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_02.png') def plot_03(): @@ -21,7 +25,7 @@ def plot_03(): # red dashes, blue squares and green triangles plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') - plt.savefig('matplotlib_plot_03.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_03.png') def plot_04(): @@ -36,7 +40,7 @@ def plot_04(): plt.scatter('a', 'b', c='c', s='d', data=data) plt.xlabel('entry a') plt.ylabel('entry b') - plt.savefig('matplotlib_plot_04.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_04.png') def plot_05(): @@ -52,7 +56,7 @@ def plot_05(): plt.text(60, .025, r'$\mu=100,\ \sigma=15$') plt.axis([40, 160, 0, 0.03]) plt.grid(True) - plt.savefig('matplotlib_plot_05.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_05.png') def plot_06(): @@ -70,7 +74,7 @@ def plot_06(): ) plt.ylim(-2, 2) - plt.savefig('matplotlib_plot_06.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_06.png') def plot_07(): @@ -123,7 +127,7 @@ def plot_07(): hspace=0.25, wspace=0.35, ) - plt.savefig('matplotlib_plot_07.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_07.png') def plot_08(): @@ -136,7 +140,7 @@ def plot_08(): ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. - plt.savefig('matplotlib_plot_08.png') + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_08.png') def main(): diff --git a/python_examples/examples/plot_data/pandas_plot.py b/python_examples/examples/plot_data/pandas_plot.py index 7a1f8cfc..6964503d 100644 --- a/python_examples/examples/plot_data/pandas_plot.py +++ b/python_examples/examples/plot_data/pandas_plot.py @@ -1,9 +1,13 @@ +from pathlib import Path + import matplotlib.pyplot as plt import numpy as np import pandas as pd # plt.close("all") +CURRENT_DIRECTORY = Path(__file__).parent + def plot_01(): ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) @@ -13,7 +17,7 @@ def plot_01(): ts.plot() # Display plot in Pycharm or terminal # plt.show() - plt.savefig('pandas_plot_01.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_01.png') def plot_02(): @@ -23,7 +27,7 @@ def plot_02(): df = df.cumsum() df.plot() - plt.savefig('pandas_plot_02.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_02.png') def plot_03(): @@ -36,7 +40,7 @@ def plot_03(): df3.plot(x='A', y='B') - plt.savefig('pandas_plot_03.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_03.png') def plot_04(): @@ -45,7 +49,7 @@ def plot_04(): df.iloc[5].plot(kind='bar') - plt.savefig('pandas_plot_04.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_04.png') def plot_05(): @@ -55,28 +59,28 @@ def plot_05(): plt.axhline(0, color='k') df.iloc[5].plot.bar() - plt.savefig('pandas_plot_05.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_05.png') def plot_06(): df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df2.plot.bar() - plt.savefig('pandas_plot_06.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_06.png') def plot_07(): df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df2.plot.bar(stacked=True) - plt.savefig('pandas_plot_07.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_07.png') def plot_08(): df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df2.plot.barh(stacked=True) - plt.savefig('pandas_plot_08.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_08.png') def plot_09(): @@ -91,7 +95,7 @@ def plot_09(): ) df4.plot.hist(alpha=0.5) - plt.savefig('pandas_plot_09.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_09.png') def plot_10(): @@ -105,28 +109,28 @@ def plot_10(): ) df4.plot.hist(stacked=True, bins=20) - plt.savefig('pandas_plot_10.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_10.png') def plot_11(): df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df.plot.area() - plt.savefig('pandas_plot_11.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_11.png') def plot_12(): series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series') series.plot.pie(figsize=(6, 6)) - plt.savefig('pandas_plot_12.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_12.png') def plot_13(): df = pd.DataFrame(3 * np.random.rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y']) df.plot.pie(subplots=True, figsize=(8, 4)) - plt.savefig('pandas_plot_13.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_13.png') def plot_14(): @@ -139,14 +143,14 @@ def plot_14(): figsize=(6, 6), ) - plt.savefig('pandas_plot_14.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_14.png') def plot_15(): series = pd.Series([0.1] * 4, index=['a', 'b', 'c', 'd'], name='series2') series.plot.pie(figsize=(6, 6)) - plt.savefig('pandas_plot_15.png') + plt.savefig(CURRENT_DIRECTORY / 'pandas_plot_15.png') def main(): diff --git a/python_examples/examples/plot_data/seaborn_plot.py b/python_examples/examples/plot_data/seaborn_plot.py index 88764e0c..a2afaf9e 100644 --- a/python_examples/examples/plot_data/seaborn_plot.py +++ b/python_examples/examples/plot_data/seaborn_plot.py @@ -1,15 +1,17 @@ -# Import seaborn +from pathlib import Path + import matplotlib.pyplot as plt import seaborn as sns # Apply the default theme sns.set_theme() -# Load an example dataset -tips = sns.load_dataset('tips') +CURRENT_DIRECTORY = Path(__file__).parent def plot_01(): + # Load an example dataset + tips = sns.load_dataset('tips') # Create a visualization sns.relplot( data=tips, @@ -22,7 +24,7 @@ def plot_01(): ) # Save as image via - plt.savefig('seaborn_plot_01.png') + plt.savefig(CURRENT_DIRECTORY / 'seaborn_plot_01.png') # Plotting in pycharm / terminal doesn't seem to work # plt.show() @@ -42,7 +44,7 @@ def plot_02(): facet_kws=dict(sharex=False), ) - plt.savefig('seaborn_plot_02.png') + plt.savefig(CURRENT_DIRECTORY / 'seaborn_plot_02.png') def plot_03(): @@ -57,13 +59,13 @@ def plot_03(): style='event', ) - plt.savefig('seaborn_plot_03.png') + plt.savefig(CURRENT_DIRECTORY / 'seaborn_plot_03.png') def plot_04(): penguins = sns.load_dataset('penguins') sns.jointplot(data=penguins, x='flipper_length_mm', y='bill_length_mm', hue='species') - plt.savefig('seaborn_plot_04.png') + plt.savefig(CURRENT_DIRECTORY / 'seaborn_plot_04.png') def plot_05(): @@ -75,7 +77,7 @@ def plot_05(): g.add_legend(frameon=True) g.legend.set_bbox_to_anchor((.61, .6)) - plt.savefig('seaborn_plot_05.png') + plt.savefig(CURRENT_DIRECTORY / 'seaborn_plot_05.png') def main(): From 634feac142cd4471bde47a95c39ff71f39ce2867 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 27 May 2022 22:27:05 +0200 Subject: [PATCH 077/391] Fix ci --- .github/workflows/test_supabase_stream_scripts.yml | 1 - python_examples/examples/other/test_multiprocessing_example.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test_supabase_stream_scripts.yml b/.github/workflows/test_supabase_stream_scripts.yml index d3bb6d99..020c78bf 100644 --- a/.github/workflows/test_supabase_stream_scripts.yml +++ b/.github/workflows/test_supabase_stream_scripts.yml @@ -46,7 +46,6 @@ jobs: if: ${{ matrix.node != '12' }} working-directory: ${{ env.SUBDIRECTORY }} run: | - cd ${{ env.SUBDIRECTORY }} npm run build - name: Run tests diff --git a/python_examples/examples/other/test_multiprocessing_example.py b/python_examples/examples/other/test_multiprocessing_example.py index 21947909..91d4e698 100644 --- a/python_examples/examples/other/test_multiprocessing_example.py +++ b/python_examples/examples/other/test_multiprocessing_example.py @@ -22,7 +22,7 @@ def test_fuzz_cpu_bound_summing(number): cpu_bound_summing(number=number) -@settings(max_examples=10, deadline=1_000) +@settings(max_examples=10, deadline=3_000) @given(numbers=st.lists(st.integers(min_value=0, max_value=1_000), min_size=1, max_size=100)) def test_find_sums(numbers: List[int]): _result = find_sums(numbers) From 15a669c8c02bfedfec487411338715f5fa396006 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 31 May 2022 01:10:04 +0200 Subject: [PATCH 078/391] Add more pie charts --- .../examples/plot_data/matplotlib_plot.py | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/python_examples/examples/plot_data/matplotlib_plot.py b/python_examples/examples/plot_data/matplotlib_plot.py index 353de456..1a0288d9 100644 --- a/python_examples/examples/plot_data/matplotlib_plot.py +++ b/python_examples/examples/plot_data/matplotlib_plot.py @@ -143,6 +143,140 @@ def plot_08(): plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_08.png') +def plot_09(): + x = [10, 50, 30, 20] + labels = ['Surfing', 'Soccer', 'Baseball', 'Lacrosse'] + + _fig, ax = plt.subplots(figsize=(6, 6)) + ax.pie(x, labels=labels, autopct='%.1f%%') + ax.set_title('Sport Popularity') + plt.tight_layout() + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_09.png') + + +def plot_10(): + labels = ['Surfing', 'Soccer', 'Baseball', 'Lacrosse'] + x = [0.1, 0.25, 0.15, 0.2] + + _fig, ax = plt.subplots(figsize=(6, 6)) + + ax.pie(x, labels=labels, autopct='%.1f%%') + ax.set_title('Sport Popularity') + plt.tight_layout() + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_10.png') + + +def plot_11(): + labels = ['Surfing', 'Soccer', 'Baseball', 'Lacrosse'] + x = [10, 50, 30, 20] + + _fig, ax = plt.subplots(figsize=(6, 6)) + + ax.pie( + x, + labels=labels, + autopct='%.1f%%', + wedgeprops={ + 'linewidth': 3.0, + 'edgecolor': 'white' + }, + textprops={'size': 'x-large'} + ) + ax.set_title('Sport Popularity', fontsize=18) + plt.tight_layout() + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_11.png') + + +def plot_12(): + ages = [17, 18, 19, 20, 21] + total_population = [21217467, 27958147, 20859088, 28882735, 19978972] + explode = [0, 0, 0, 0, 0.1] + + _fig, _ax = plt.subplots(figsize=(6, 6)) + plt.pie(total_population, labels=ages, explode=explode, wedgeprops={'edgecolor': 'black'}) + plt.title('A Simple Pie Chart') + # plt.pie( + # total_population, + # labels=ages, + # explode=explode, + # shadow=True, + # autopct='%1.1f%%', + # wedgeprops={'edgecolor': 'black'} + # ) + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_12.png') + + +def plot_13(): + ages = [17, 18, 19, 20, 21] + total_population = [21217467, 27958147, 20859088, 28882735, 19978972] + explode = [0, 0, 0, 0, 0.1] + + _fig, _ax = plt.subplots(figsize=(6, 6)) + + plt.pie( + total_population, + labels=ages, + explode=explode, + shadow=True, + autopct='%1.1f%%', + wedgeprops={'edgecolor': 'black'} + ) + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_13.png') + + +def plot_14(): + # https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html + _fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect='equal')) + + recipe = ['375 g flour', '75 g sugar', '250 g butter', '300 g berries'] + + data = [float(x.split()[0]) for x in recipe] + ingredients = [x.split()[-1] for x in recipe] + + def func(pct, allvals): + absolute = int(np.round(pct / 100. * np.sum(allvals))) + return f'{pct:.1f}%\n({absolute} g)' + + wedges, _texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data), textprops=dict(color='w')) + + ax.legend(wedges, ingredients, title='Ingredients', loc='center left', bbox_to_anchor=(1, 0, 0.5, 1)) + + plt.setp(autotexts, size=8, weight='bold') + + ax.set_title('Matplotlib bakery: A pie') + + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_14.png') + + +def plot_15(): + # https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html + _fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect='equal')) + + recipe = ['225 g flour', '90 g sugar', '1 egg', '60 g butter', '100 ml milk', '1/2 package of yeast'] + + data = [225, 90, 50, 60, 100, 5] + + wedges, _texts = ax.pie(data, wedgeprops=dict(width=0.5), startangle=-40) + + bbox_props = dict(boxstyle='square,pad=0.3', fc='w', ec='k', lw=0.72) + kw = dict(arrowprops=dict(arrowstyle='-'), bbox=bbox_props, zorder=0, va='center') + + for i, p in enumerate(wedges): + ang = (p.theta2 - p.theta1) / 2. + p.theta1 + y = np.sin(np.deg2rad(ang)) + x = np.cos(np.deg2rad(ang)) + horizontalalignment = {-1: 'right', 1: 'left'}[int(np.sign(x))] + connectionstyle = f'angle,angleA=0,angleB={ang}' + kw['arrowprops'].update({'connectionstyle': connectionstyle}) + ax.annotate( + recipe[i], xy=(x, y), xytext=(1.35 * np.sign(x), 1.4 * y), horizontalalignment=horizontalalignment, **kw + ) + + ax.set_title('Matplotlib bakery: A donut') + + plt.savefig(CURRENT_DIRECTORY / 'matplotlib_plot_15.png') + + def main(): plot_01() plot_02() @@ -152,6 +286,13 @@ def main(): plot_06() plot_07() plot_08() + plot_09() + plot_10() + plot_11() + plot_12() + plot_13() + plot_14() + plot_15() if __name__ == '__main__': From 78a93fa91d5a67bc25e00640558dd3d44ec5b99e Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 4 Jun 2022 17:52:49 +0200 Subject: [PATCH 079/391] Add docker image for fastapi server --- .github/workflows/test_fastapi_server.yml | 119 ++++++++++++++-------- fastapi_server/.dockerignore | 1 + fastapi_server/Dockerfile | 17 ++++ 3 files changed, 92 insertions(+), 45 deletions(-) create mode 100644 fastapi_server/.dockerignore create mode 100644 fastapi_server/Dockerfile diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 11071514..4247feed 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -14,6 +14,7 @@ on: env: SUBDIRECTORY: fastapi_server + VERSION_NUMBER: 1.0.0 jobs: test_backend: @@ -55,59 +56,87 @@ jobs: run: | poetry run pytest - deploy_backend: + build_and_deploy_docker_image: strategy: + fail-fast: false matrix: os: [ubuntu-latest] runs-on: ${{ matrix.os }} - needs: [test_backend] - env: - USERNAME: fastapiserver - if: github.ref == 'refs/heads/develop' steps: - uses: actions/checkout@v2 - - name: Deploy backend + - name: Build docker image + working-directory: fastapi_server run: | - rm -rf ${{ env.SUBDIRECTORY }}/data + docker build -t burnysc2/fastapi_server:latest . + docker build -t burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} . - - name: Stop services - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.HOST }} - port: 22 - username: ${{ env.USERNAME }} - key: ${{ secrets.FASTAPISERVERKEY }} - passphrase: '' - script: | - sudo /bin/systemctl disable --now ${{ env.USERNAME }} - - - name: Update server files - uses: appleboy/scp-action@master - with: - host: ${{ secrets.HOST }} - port: 22 - username: ${{ env.USERNAME }} - key: ${{ secrets.FASTAPISERVERKEY }} - passphrase: '' - source: . - target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} - - - name: Update dependencies and .service file then re-enable service - uses: appleboy/ssh-action@master + - name: Login to DockerHub + uses: docker/login-action@v2 with: - host: ${{ secrets.HOST }} - port: 22 - username: ${{ env.USERNAME }} - key: ${{ secrets.FASTAPISERVERKEY }} - passphrase: '' - script: | - cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" - cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock - cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml - echo -e "STAGE=prod\n" > .env - poetry install --no-dev - cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" - sudo /bin/systemctl daemon-reload - sudo /bin/systemctl enable --now ${{ env.USERNAME }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Upload docker image + if: github.ref == 'refs/heads/develop' && github.event_name == 'push' + run: | + docker push burnysc2/fastapi_server:latest + docker push burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} + +# deploy_backend: +# strategy: +# matrix: +# os: [ubuntu-latest] +# runs-on: ${{ matrix.os }} +# needs: [test_backend] +# env: +# USERNAME: fastapiserver +# if: github.ref == 'refs/heads/develop' +# +# steps: +# - uses: actions/checkout@v2 +# +# - name: Deploy backend +# run: | +# rm -rf ${{ env.SUBDIRECTORY }}/data +# +# - name: Stop services +# uses: appleboy/ssh-action@master +# with: +# host: ${{ secrets.HOST }} +# port: 22 +# username: ${{ env.USERNAME }} +# key: ${{ secrets.FASTAPISERVERKEY }} +# passphrase: '' +# script: | +# sudo /bin/systemctl disable --now ${{ env.USERNAME }} +# +# - name: Update server files +# uses: appleboy/scp-action@master +# with: +# host: ${{ secrets.HOST }} +# port: 22 +# username: ${{ env.USERNAME }} +# key: ${{ secrets.FASTAPISERVERKEY }} +# passphrase: '' +# source: . +# target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} +# +# - name: Update dependencies and .service file then re-enable service +# uses: appleboy/ssh-action@master +# with: +# host: ${{ secrets.HOST }} +# port: 22 +# username: ${{ env.USERNAME }} +# key: ${{ secrets.FASTAPISERVERKEY }} +# passphrase: '' +# script: | +# cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" +# cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock +# cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml +# echo -e "STAGE=prod\n" > .env +# poetry install --no-dev +# cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" +# sudo /bin/systemctl daemon-reload +# sudo /bin/systemctl enable --now ${{ env.USERNAME }} diff --git a/fastapi_server/.dockerignore b/fastapi_server/.dockerignore new file mode 100644 index 00000000..b926d727 --- /dev/null +++ b/fastapi_server/.dockerignore @@ -0,0 +1 @@ +*test*/* diff --git a/fastapi_server/Dockerfile b/fastapi_server/Dockerfile new file mode 100644 index 00000000..c7e9837a --- /dev/null +++ b/fastapi_server/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.10-slim + +ADD poetry.lock pyproject.toml /root/fastapi_server/ + +WORKDIR /root/fastapi_server + +RUN pip install poetry --no-cache-dir \ + && poetry install --no-dev + +ADD . /root/fastapi_server/fastapi_server + +WORKDIR /root/fastapi_server + +CMD ["poetry", "run", "uvicorn", "fastapi_server.main:app", "--host", "0.0.0.0", "--port", "8000"] + +# docker build -t fastapi_server . +# docker run -d --rm --name fastapitest -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data fastapi_server From 8a3c3ede0d0585f2bc445de93d3c1de23e9a8358 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 4 Jun 2022 18:34:44 +0200 Subject: [PATCH 080/391] Update readme and service file of fastapiserver --- fastapi_server/Dockerfile | 4 ++-- fastapi_server/README.md | 15 +++++++++++++++ fastapi_server/systemd/fastapiserver.service | 5 +++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/fastapi_server/Dockerfile b/fastapi_server/Dockerfile index c7e9837a..1a0a978d 100644 --- a/fastapi_server/Dockerfile +++ b/fastapi_server/Dockerfile @@ -13,5 +13,5 @@ WORKDIR /root/fastapi_server CMD ["poetry", "run", "uvicorn", "fastapi_server.main:app", "--host", "0.0.0.0", "--port", "8000"] -# docker build -t fastapi_server . -# docker run -d --rm --name fastapitest -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data fastapi_server +# docker build -t burnysc2/fastapi_server:latest . +# docker run -d --rm --name fastapi_server -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest diff --git a/fastapi_server/README.md b/fastapi_server/README.md index cf04385d..558ed18a 100644 --- a/fastapi_server/README.md +++ b/fastapi_server/README.md @@ -6,3 +6,18 @@ poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 --reload ``` Now you can go to `http://0.0.0.0:8000` or `http://0.0.0.0:8000/docs` to check out the documentation to all endpoints + +## Deploy +- Requiement: docker + +On the server, either build the docker image via + +`docker build -t burnysc2/fastapi_server:latest .` + +or pull the latest image + +`docker pull burnysc2/fastapi_server:latest` + +now run it with a `data` subfolder mounted which will be persistent + +`docker run -it -d --rm --name fastapitest -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest` diff --git a/fastapi_server/systemd/fastapiserver.service b/fastapi_server/systemd/fastapiserver.service index 55aa8b2a..a7c4f98c 100644 --- a/fastapi_server/systemd/fastapiserver.service +++ b/fastapi_server/systemd/fastapiserver.service @@ -1,11 +1,12 @@ +# /etc/systemd/system/fastapiserver.service [Service] -ExecStart=/usr/local/bin/poetry run uvicorn fastapi_server.main:app --host localhost --port 8000 +ExecStart=/usr/bin/docker run --rm --name fastapi_server -p 8000:8000 --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest Restart=always RestartSec=20 SyslogIdentifier=fastapiserver User=fastapiserver Group=fastapiserver -WorkingDirectory=/home/fastapiserver/fastapiserver/ +WorkingDirectory=/home/fastapiserver/ [Install] WantedBy=multi-user.target From bf3875b2d75d0c3dff4594b0c961f67802505afb Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 4 Jun 2022 19:11:13 +0200 Subject: [PATCH 081/391] Fix endpoint address --- .github/workflows/test_fastapi_server.yml | 113 +++++++++++---------- svelte_frontend/src/functions/constants.ts | 5 +- svelte_frontend/src/routes/todo.svelte | 14 ++- 3 files changed, 67 insertions(+), 65 deletions(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 4247feed..6d322099 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -57,6 +57,7 @@ jobs: poetry run pytest build_and_deploy_docker_image: + needs: [test_backend] strategy: fail-fast: false matrix: @@ -84,59 +85,59 @@ jobs: docker push burnysc2/fastapi_server:latest docker push burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} -# deploy_backend: -# strategy: -# matrix: -# os: [ubuntu-latest] -# runs-on: ${{ matrix.os }} -# needs: [test_backend] -# env: -# USERNAME: fastapiserver -# if: github.ref == 'refs/heads/develop' -# -# steps: -# - uses: actions/checkout@v2 -# -# - name: Deploy backend -# run: | -# rm -rf ${{ env.SUBDIRECTORY }}/data -# -# - name: Stop services -# uses: appleboy/ssh-action@master -# with: -# host: ${{ secrets.HOST }} -# port: 22 -# username: ${{ env.USERNAME }} -# key: ${{ secrets.FASTAPISERVERKEY }} -# passphrase: '' -# script: | -# sudo /bin/systemctl disable --now ${{ env.USERNAME }} -# -# - name: Update server files -# uses: appleboy/scp-action@master -# with: -# host: ${{ secrets.HOST }} -# port: 22 -# username: ${{ env.USERNAME }} -# key: ${{ secrets.FASTAPISERVERKEY }} -# passphrase: '' -# source: . -# target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} -# -# - name: Update dependencies and .service file then re-enable service -# uses: appleboy/ssh-action@master -# with: -# host: ${{ secrets.HOST }} -# port: 22 -# username: ${{ env.USERNAME }} -# key: ${{ secrets.FASTAPISERVERKEY }} -# passphrase: '' -# script: | -# cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" -# cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock -# cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml -# echo -e "STAGE=prod\n" > .env -# poetry install --no-dev -# cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" -# sudo /bin/systemctl daemon-reload -# sudo /bin/systemctl enable --now ${{ env.USERNAME }} + deploy_backend: + needs: [build_and_deploy_docker_image] + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + env: + USERNAME: fastapiserver + if: github.ref == 'refs/heads/develop' + + steps: + - uses: actions/checkout@v2 + + - name: Deploy backend + run: | + rm -rf ${{ env.SUBDIRECTORY }}/data + + - name: Stop services + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + script: | + sudo /bin/systemctl disable --now ${{ env.USERNAME }} + + - name: Update server files + uses: appleboy/scp-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + source: . + target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} + + - name: Update dependencies and .service file then re-enable service + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERKEY }} + passphrase: '' + script: | + cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" + cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock + cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml + echo -e "STAGE=prod\n" > .env + poetry install --no-dev + cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" + sudo /bin/systemctl daemon-reload + sudo /bin/systemctl enable --now ${{ env.USERNAME }} diff --git a/svelte_frontend/src/functions/constants.ts b/svelte_frontend/src/functions/constants.ts index 79584361..f7ae41bc 100644 --- a/svelte_frontend/src/functions/constants.ts +++ b/svelte_frontend/src/functions/constants.ts @@ -3,4 +3,7 @@ const https: boolean = ip.indexOf("localhost") === -1 const HTTP_OR_HTTPS = https ? "https" : "http" // Rest -export const LOGIN_ENDPOINT = `${HTTP_OR_HTTPS}://${ip}/login` +export const API_SERVER_ADDRESS = `${HTTP_OR_HTTPS}://${ip}` +export const API_ENDPOINT = `${API_SERVER_ADDRESS}/api` +export const API_BODY_ENDPOINT = `${API_SERVER_ADDRESS}/api_body` +export const API_MODEL_ENDPOINT = `${API_SERVER_ADDRESS}/api_model` diff --git a/svelte_frontend/src/routes/todo.svelte b/svelte_frontend/src/routes/todo.svelte index fcfc1275..91137437 100644 --- a/svelte_frontend/src/routes/todo.svelte +++ b/svelte_frontend/src/routes/todo.svelte @@ -3,6 +3,7 @@ import Headers from "../components/Headers.svelte" import TodoCard from "../components/TodoCard.svelte" + import { API_BODY_ENDPOINT, API_ENDPOINT, API_MODEL_ENDPOINT } from "../functions/constants" let newTodoText = "" let cards: { id: number; todo_text: string; created_timestamp: number; done_timestamp: number; done: boolean }[] = [ @@ -10,9 +11,6 @@ ] let APIserverIsResponding = true - const ip = process.env.BACKEND_SERVER || "localhost:8000" - const api_server_ip = `http://${ip}` - onMount(async () => { // console.log("Loading todos") await getTodos() @@ -44,7 +42,7 @@ const getTodos = async () => { APIserverIsResponding = true try { - let response = await fetch(`${api_server_ip}/api`) + let response = await fetch(API_ENDPOINT) if (response.ok) { cards = await response.json() // console.log(`Response is: ${JSON.stringify(cards)}`); @@ -64,7 +62,7 @@ fetch(`/api/${newTodo}?` + params.toString(), requestOptions) */ try { - await fetch(`${api_server_ip}/api/${newTodoText}`, { + await fetch(`${API_ENDPOINT}/${newTodoText}`, { method: "POST", }) } catch { @@ -83,7 +81,7 @@ new_todo: newTodoText, }), } - await fetch(`${api_server_ip}/api_body`, requestOptions) + await fetch(API_BODY_ENDPOINT, requestOptions) } catch { localSubmit() } @@ -103,7 +101,7 @@ todo_description: newTodoText, }), } - await fetch(`${api_server_ip}/api_model`, requestOptions) + await fetch(`${API_ENDPOINT}/api_model`, requestOptions) } catch { localSubmit() } @@ -113,7 +111,7 @@ const removeTodo = async (id: number) => { try { - await fetch(`${api_server_ip}/api/${id}`, { + await fetch(API_MODEL_ENDPOINT, { method: "DELETE", }) } catch { From 9211935485b6d862e67f6744c54872dce5c85857 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 4 Jun 2022 19:28:00 +0200 Subject: [PATCH 082/391] Add prod env variable --- .github/workflows/test_fastapi_server.yml | 49 ++++++-------------- fastapi_server/README.md | 12 +++-- fastapi_server/main.py | 27 ++++++----- fastapi_server/pyproject.toml | 2 - fastapi_server/systemd/fastapiserver.service | 2 +- 5 files changed, 38 insertions(+), 54 deletions(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 6d322099..b77833f3 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -96,13 +96,9 @@ jobs: if: github.ref == 'refs/heads/develop' steps: - - uses: actions/checkout@v2 - - - name: Deploy backend - run: | - rm -rf ${{ env.SUBDIRECTORY }}/data +# - uses: actions/checkout@v2 - - name: Stop services + - name: Update docker image on server and restart server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} @@ -112,32 +108,17 @@ jobs: passphrase: '' script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} - - - name: Update server files - uses: appleboy/scp-action@master - with: - host: ${{ secrets.HOST }} - port: 22 - username: ${{ env.USERNAME }} - key: ${{ secrets.FASTAPISERVERKEY }} - passphrase: '' - source: . - target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} - - - name: Update dependencies and .service file then re-enable service - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.HOST }} - port: 22 - username: ${{ env.USERNAME }} - key: ${{ secrets.FASTAPISERVERKEY }} - passphrase: '' - script: | - cd "/home/${{ env.USERNAME}}/${{ env.USERNAME }}" - cp ${{ env.SUBDIRECTORY }}/poetry.lock poetry.lock - cp ${{ env.SUBDIRECTORY }}/pyproject.toml pyproject.toml - echo -e "STAGE=prod\n" > .env - poetry install --no-dev - cp "/home/${{ env.USERNAME }}/${{ env.USERNAME }}/${{ env.SUBDIRECTORY }}/systemd/${{ env.USERNAME }}.service" "/etc/systemd/system/${{ env.USERNAME }}.service" - sudo /bin/systemctl daemon-reload + sudo systemctl daemon-reload + docker pull burnysc2/fastapi_server:latest sudo /bin/systemctl enable --now ${{ env.USERNAME }} + +# - name: Update server files +# uses: appleboy/scp-action@master +# with: +# host: ${{ secrets.HOST }} +# port: 22 +# username: ${{ env.USERNAME }} +# key: ${{ secrets.FASTAPISERVERKEY }} +# passphrase: '' +# source: . +# target: /home/${{ env.USERNAME }}/${{ env.USERNAME }} diff --git a/fastapi_server/README.md b/fastapi_server/README.md index 558ed18a..f589db22 100644 --- a/fastapi_server/README.md +++ b/fastapi_server/README.md @@ -12,12 +12,18 @@ Now you can go to `http://0.0.0.0:8000` or `http://0.0.0.0:8000/docs` to check o On the server, either build the docker image via -`docker build -t burnysc2/fastapi_server:latest .` +``` +docker build -t burnysc2/fastapi_server:latest . +``` or pull the latest image -`docker pull burnysc2/fastapi_server:latest` +``` +docker pull burnysc2/fastapi_server:latest +``` now run it with a `data` subfolder mounted which will be persistent -`docker run -it -d --rm --name fastapitest -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest` +``` +docker run --rm --name fastapitest --publish 8000:8000 --env STAGE=PROD --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +``` diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 4804f1f0..2680827c 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -1,7 +1,7 @@ -from pathlib import Path +import os +from typing import Literal import uvicorn -from dotenv import dotenv_values from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from loguru import logger @@ -11,24 +11,23 @@ from fastapi_server.routes.replay_parser import replay_parser_router from fastapi_server.routes.todolist import todo_list_router -env_path = Path(__file__).parent / '.env' -if not env_path.is_file(): - logger.info( - """Local .env file in "fastapi_server" directory does not exist. For local development please fill it with contents: -STAGE=dev""" - ) - -config: dict = dotenv_values(env_path) +STAGE: Literal['DEV', 'PROD'] = os.getenv('STAGE', 'DEV') app = FastAPI() app.include_router(hello_world_router) app.include_router(replay_parser_router) +app.include_router(todo_list_router) + +origins = [ + 'https://burnysc2.github.io', + 'https://replaycomparer.netlify.app', + 'https://burnysc2-monorepo.netlify.app', + 'https://burnysc2-monorepo-dev.netlify.app', +] -origins = ['https://burnysc2.github.io', 'https://replaycomparer.netlify.app'] -if config.get('STAGE', '') != 'prod': - logger.info("Starting in 'STAGE == dev' mode") +logger.info(f"Starting in 'STAGE == {STAGE}' mode") +if STAGE != 'prod': origins += [f'http://localhost:{i}' for i in range(1, 2**16)] - app.include_router(todo_list_router) app.include_router(chat_router) app.add_middleware( diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index b9e5a0cb..fdeb728c 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -18,8 +18,6 @@ colorama = "^0.4.4" loguru = "^0.5" # Network interaction requests = "^2.27.1" -# Local .env file -python-dotenv = "^0.19.2" zephyrus-sc2-parser = "^0.3.7" python-multipart = "^0.0.5" diff --git a/fastapi_server/systemd/fastapiserver.service b/fastapi_server/systemd/fastapiserver.service index a7c4f98c..2995eaf1 100644 --- a/fastapi_server/systemd/fastapiserver.service +++ b/fastapi_server/systemd/fastapiserver.service @@ -1,6 +1,6 @@ # /etc/systemd/system/fastapiserver.service [Service] -ExecStart=/usr/bin/docker run --rm --name fastapi_server -p 8000:8000 --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +ExecStart=/usr/bin/docker run --rm --name fastapi_server --publish 8000:8000 --env STAGE=PROD --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest Restart=always RestartSec=20 SyslogIdentifier=fastapiserver From 9351d0e29da080f6ac8111fd3b0a26aeb1464f1b Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 4 Jun 2022 19:36:25 +0200 Subject: [PATCH 083/391] Fix integration test --- svelte_frontend/src/routes/todo.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svelte_frontend/src/routes/todo.svelte b/svelte_frontend/src/routes/todo.svelte index 91137437..59f8a0a4 100644 --- a/svelte_frontend/src/routes/todo.svelte +++ b/svelte_frontend/src/routes/todo.svelte @@ -101,7 +101,7 @@ todo_description: newTodoText, }), } - await fetch(`${API_ENDPOINT}/api_model`, requestOptions) + await fetch(API_MODEL_ENDPOINT, requestOptions) } catch { localSubmit() } From 917c3af81f27718b4d1646152ac77867aec026bf Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 09:37:45 +0200 Subject: [PATCH 084/391] Add multiple template files for common issues --- fastapi_server/main.py | 2 +- .../systemd/fastapiserver_dev.service | 12 ++++ python_examples/main.py | 16 +++-- python_examples/templates/__init__.py | 0 .../templates/async_timeout_function.py | 24 +++++++ .../templates/deprecate_a_function.py | 27 +++++++ .../templates/error_suppression.py | 14 ++++ python_examples/templates/inspect_function.py | 23 ++++++ python_examples/templates/timeout_function.py | 72 +++++++++++++++++++ 9 files changed, 185 insertions(+), 5 deletions(-) create mode 100644 fastapi_server/systemd/fastapiserver_dev.service create mode 100644 python_examples/templates/__init__.py create mode 100644 python_examples/templates/async_timeout_function.py create mode 100644 python_examples/templates/deprecate_a_function.py create mode 100644 python_examples/templates/error_suppression.py create mode 100644 python_examples/templates/inspect_function.py create mode 100644 python_examples/templates/timeout_function.py diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 2680827c..ec786d02 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -26,7 +26,7 @@ ] logger.info(f"Starting in 'STAGE == {STAGE}' mode") -if STAGE != 'prod': +if STAGE != 'PROD': origins += [f'http://localhost:{i}' for i in range(1, 2**16)] app.include_router(chat_router) diff --git a/fastapi_server/systemd/fastapiserver_dev.service b/fastapi_server/systemd/fastapiserver_dev.service new file mode 100644 index 00000000..3bab0773 --- /dev/null +++ b/fastapi_server/systemd/fastapiserver_dev.service @@ -0,0 +1,12 @@ +# /etc/systemd/system/fastapiserver.service +[Service] +ExecStart=/usr/bin/docker run --rm --name fastapi_server --publish 8000:8000 --env STAGE=DEV --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +Restart=always +RestartSec=20 +SyslogIdentifier=fastapiserver +User=fastapiserverdev +Group=fastapiserverdev +WorkingDirectory=/home/fastapiserverdev/ + +[Install] +WantedBy=multi-user.target diff --git a/python_examples/main.py b/python_examples/main.py index d3d55503..ebe12c64 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -41,6 +41,11 @@ from python_examples.examples.plot_data.matplotlib_plot import main as matplotlib_plot_main from python_examples.examples.plot_data.pandas_plot import main as pandas_plot_main from python_examples.examples.plot_data.seaborn_plot import main as seaborn_plot_main +from python_examples.templates.async_timeout_function import main as async_timeout_main +from python_examples.templates.deprecate_a_function import main as deprecate_a_function_main +from python_examples.templates.error_suppression import main as error_suppression_main +from python_examples.templates.inspect_function import main as inspect_main +from python_examples.templates.timeout_function import main as timeout_main logger.remove() # Remove previous default handlers # Log to console @@ -112,11 +117,14 @@ async def main(): test_database_with_sqlmodel() await test_database_with_mongodb() - logger.info('Test plotting data') - plot_data() - + logger.info('Running template files') + await async_timeout_main() + deprecate_a_function_main() + error_suppression_main() + inspect_main() + timeout_main() -def plot_data(): + logger.info('Test plotting data') matplotlib_plot_main() bokeh_plot_main() pandas_plot_main() diff --git a/python_examples/templates/__init__.py b/python_examples/templates/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python_examples/templates/async_timeout_function.py b/python_examples/templates/async_timeout_function.py new file mode 100644 index 00000000..49816829 --- /dev/null +++ b/python_examples/templates/async_timeout_function.py @@ -0,0 +1,24 @@ +import asyncio + +from loguru import logger + + +async def slow_function(): + await asyncio.sleep(3) + text = 'We did it reddit' + logger.info(text) + return text + + +async def main(): + task = asyncio.create_task(slow_function()) + try: + await asyncio.wait_for(task, timeout=1.1) + assert False, 'Should never be reached' + except asyncio.TimeoutError: + assert task.cancelled() is True + assert task.done() is True + + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/python_examples/templates/deprecate_a_function.py b/python_examples/templates/deprecate_a_function.py new file mode 100644 index 00000000..47ca4399 --- /dev/null +++ b/python_examples/templates/deprecate_a_function.py @@ -0,0 +1,27 @@ +import warnings + +warnings.simplefilter('once') + + +def context_level_2(): + warnings.warn( + 'With this stacklevel, the error will point to the call in context_level_1', DeprecationWarning, stacklevel=2 + ) + warnings.warn( + 'With this stacklevel, the error will point to the call in the main function', DeprecationWarning, stacklevel=3 + ) + + +def context_level_1(): + context_level_2() + + +def main(): + # Warning will only be printed once + context_level_1() + # And not on a second call + context_level_1() + + +if __name__ == '__main__': + main() diff --git a/python_examples/templates/error_suppression.py b/python_examples/templates/error_suppression.py new file mode 100644 index 00000000..01ef5ffb --- /dev/null +++ b/python_examples/templates/error_suppression.py @@ -0,0 +1,14 @@ +from contextlib import suppress + + +def divide_through_zero(n: float): + return n / 0 + + +def main(): + with suppress(ZeroDivisionError): + divide_through_zero(420) + + +if __name__ == '__main__': + main() diff --git a/python_examples/templates/inspect_function.py b/python_examples/templates/inspect_function.py new file mode 100644 index 00000000..a3227b61 --- /dev/null +++ b/python_examples/templates/inspect_function.py @@ -0,0 +1,23 @@ +import inspect + + +def func_without_arg() -> None: + return None + + +def func_with_1_arg(n: int, optional: int = 0) -> int: + return n + 1 + optional + + +def func_with_2_args(a: int, b: int, optional: int = 0) -> int: + return a + b + optional + + +def main(): + assert len(inspect.signature(func_without_arg).parameters) == 0 + assert len(inspect.signature(func_with_1_arg).parameters) == 2 + assert len(inspect.signature(func_with_2_args).parameters) == 3 + + +if __name__ == '__main__': + main() diff --git a/python_examples/templates/timeout_function.py b/python_examples/templates/timeout_function.py new file mode 100644 index 00000000..7bccebab --- /dev/null +++ b/python_examples/templates/timeout_function.py @@ -0,0 +1,72 @@ +import signal +import time +from contextlib import contextmanager + + +class Timeout: + """ + Run something for a maximum limited time + try: + with Timeout(seconds=2): + ... + except TimeoutError: + """ + + def __init__(self, seconds: int = 1, error_message='Timeout'): + assert isinstance(seconds, int), type(seconds) + assert seconds > 0 + self.seconds = seconds + self.error_message = error_message + + def handle_timeout(self, signum, frame): + raise TimeoutError(self.error_message) + + def __enter__(self): + signal.signal(signal.SIGALRM, self.handle_timeout) + signal.alarm(self.seconds) + + def __exit__(self, type_, value, traceback): + signal.alarm(0) + + +@contextmanager +def timeout(seconds: int = 1, error_message='Timeout'): + """ + Run something for a maximum limited time + try: + with Timeout(seconds=2): + ... + except TimeoutError: + """ + assert isinstance(seconds, int), type(seconds) + assert seconds > 0 + + def timeout_handler(_signum, _frame): + raise TimeoutError(error_message) + + signal.signal(signal.SIGALRM, timeout_handler) + signal.alarm(seconds) + yield + signal.alarm(0) + + +def main(): + # Test Timeout class + try: + with Timeout(seconds=1, error_message='Fancy error message'): + time.sleep(3) + assert False, 'Should never be reached' + except TimeoutError: + pass + + # Test timeout function with contextmanager + try: + with timeout(seconds=1, error_message='Fancy error message'): + time.sleep(3) + assert False, 'Should never be reached' + except TimeoutError: + pass + + +if __name__ == '__main__': + main() From 180dd7d61ff971e0eee336ce1ebc77a33e62657a Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:09:25 +0200 Subject: [PATCH 085/391] Improve python file checks --- .github/workflows/check_python_code.yml | 61 +++++ .github/workflows/python_examples.yml | 8 + .github/workflows/test_fastapi_server.yml | 33 ++- .pre-commit-config.yaml | 23 +- burny_common/copy_file_to_server.py | 4 +- fastapi_server/Dockerfile | 1 + fastapi_server/main.py | 3 +- fastapi_server/test/base_test.py | 3 - poetry.lock | 231 +++++++++--------- pyproject.toml | 4 +- .../discrete_structures/combination.py | 1 - .../discrete_structures/permutation.py | 3 +- python_examples/templates/inspect_function.py | 38 ++- svelte_frontend/test_frontend/test_e2e.py | 3 - 14 files changed, 272 insertions(+), 144 deletions(-) create mode 100644 .github/workflows/check_python_code.yml diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml new file mode 100644 index 00000000..95f84b00 --- /dev/null +++ b/.github/workflows/check_python_code.yml @@ -0,0 +1,61 @@ +name: test_fastapi_server + + +on: + push: + paths: + - ./**/*.py + - .github/workflows/check_python_code.yaml + pull_request: + branches: + - master + - develop + +env: + SUBDIRECTORY: check-python-code + +jobs: + test_backend: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python-version: ['3.10'] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Poetry + run: | + pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + + - name: Set up cache + uses: actions/cache@v3 + with: + path: .venv + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + + - name: Install Python dependencies + run: | + poetry install + + - name: Format python code + run: | + poetry run yapf --in-place $(git ls-files '*.py') + + - name: Run pylint + run: | + poetry run pylint $(git ls-files '*.py') + + - name: Run mypy + run: |- + poetry run mypy $(git ls-files '*.py') diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 110896c7..a826994d 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -80,6 +80,14 @@ jobs: run: | poetry install + - name: Format python code + run: | + poetry run yapf --in-place $(git ls-files '*.py' | grep -E '${{ env.SUBDIRECTORY }}/.*') + + - name: Run pylint + run: | + poetry run pylint $(git ls-files '*.py' | grep -E '${{ env.SUBDIRECTORY }}/.*') + - name: Test with pytest run: | poetry run pytest ${{ env.SUBDIRECTORY }} diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index b77833f3..26164b65 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -85,19 +85,42 @@ jobs: docker push burnysc2/fastapi_server:latest docker push burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} - deploy_backend: + deploy_backend_dev: + if: github.ref == 'refs/heads/develop' needs: [build_and_deploy_docker_image] strategy: matrix: os: [ubuntu-latest] runs-on: ${{ matrix.os }} env: - USERNAME: fastapiserver - if: github.ref == 'refs/heads/develop' + USERNAME: fastapiserverdev steps: -# - uses: actions/checkout@v2 + - name: Update docker image on server and restart server + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.FASTAPISERVERDEVKEY }} + passphrase: '' + script: | + sudo /bin/systemctl disable --now ${{ env.USERNAME }} + sudo systemctl daemon-reload + docker pull burnysc2/fastapi_server:latest + sudo /bin/systemctl enable --now ${{ env.USERNAME }} + + deploy_backend_prod: + if: github.ref == 'refs/heads/master' + needs: [build_and_deploy_docker_image] + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + env: + USERNAME: fastapiserver + steps: - name: Update docker image on server and restart server uses: appleboy/ssh-action@master with: @@ -109,7 +132,7 @@ jobs: script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} sudo systemctl daemon-reload - docker pull burnysc2/fastapi_server:latest + docker pull burnysc2/fastapi_server:${{ env.VERSION_NUMBER }} sudo /bin/systemctl enable --now ${{ env.USERNAME }} # - name: Update server files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 524d3c72..d2fe5f8b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -89,26 +89,31 @@ repos: name: format python code stages: [commit] language: system - entry: poetry run yapf --in-place - files: ^.*\.py$ - pass_filenames: true + entry: /bin/bash -c "poetry run yapf --in-place $(git ls-files '*.py')" + pass_filenames: false + # If you want to run manually: + # poetry run pylint $(git ls-files '*.py') + # poetry run pylint python_examples/templates + # poetry run pylint python_examples/templates/inspect_function.py - id: pylint name: pylint stages: [commit] language: system - entry: poetry run pylint - files: ^.*\.py$ - pass_filenames: true + entry: /bin/bash -c "poetry run pylint $(git ls-files '*.py')" + pass_filenames: false + # poetry run mypy ./ + # poetry run mypy $(git ls-files '*.py') + # poetry run mypy python_examples/templates + # poetry run mypy python_examples/templates/inspect_function.py # Run mypy type checks - id: mypy name: mypy stages: [commit] language: system - entry: poetry run mypy - files: ^.*\.py$ - pass_filenames: true + entry: /bin/bash -c "poetry run mypy $(git ls-files '*.py')" + pass_filenames: false # TODO Figure out how to only format changed frontend files - have to pass in file names to the bash command? - id: format_svelte_frontend diff --git a/burny_common/copy_file_to_server.py b/burny_common/copy_file_to_server.py index 609f0d9d..49d3df47 100644 --- a/burny_common/copy_file_to_server.py +++ b/burny_common/copy_file_to_server.py @@ -30,7 +30,7 @@ def copy_file_to_server_helper( ): if create_target_folder: create_target_dir(client, target_path.parent) - return sftp.put(source_path.absolute().__str__(), target_path.absolute().__str__()) + return sftp.put(str(source_path.absolute()), str(target_path.absolute())) @click.command() @@ -68,7 +68,7 @@ def copy_file_to_server( with client.open_sftp() as sftp: assert path_source.is_file() - print(f'Copying {path_source.absolute().__str__()} to {path_target.absolute().__str__()}') + print(f'Copying {path_source.absolute()} to {path_target.absolute()}') copy_file_to_server_helper( client, sftp, diff --git a/fastapi_server/Dockerfile b/fastapi_server/Dockerfile index 1a0a978d..e9541c28 100644 --- a/fastapi_server/Dockerfile +++ b/fastapi_server/Dockerfile @@ -5,6 +5,7 @@ ADD poetry.lock pyproject.toml /root/fastapi_server/ WORKDIR /root/fastapi_server RUN pip install poetry --no-cache-dir \ + && poetry config virtualenvs.create false \ && poetry install --no-dev ADD . /root/fastapi_server/fastapi_server diff --git a/fastapi_server/main.py b/fastapi_server/main.py index ec786d02..38439f18 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -11,7 +11,8 @@ from fastapi_server.routes.replay_parser import replay_parser_router from fastapi_server.routes.todolist import todo_list_router -STAGE: Literal['DEV', 'PROD'] = os.getenv('STAGE', 'DEV') +assert os.getenv('STAGE', 'DEV') in {'DEV', 'PROD'}, os.getenv('STAGE') +STAGE: Literal['DEV', 'PROD'] = os.getenv('STAGE', 'DEV') # type: ignore app = FastAPI() app.include_router(hello_world_router) diff --git a/fastapi_server/test/base_test.py b/fastapi_server/test/base_test.py index e4af1a2d..76d6b2e0 100644 --- a/fastapi_server/test/base_test.py +++ b/fastapi_server/test/base_test.py @@ -9,11 +9,9 @@ class BaseTest: method_client: TestClient = None # type: ignore - # pylint: disable=R0201 def setup_method(self, _method): BaseTest.method_client = TestClient(app) - # pylint: disable=R0201 def teardown_method(self, _method): BaseTest.method_client = None @@ -26,7 +24,6 @@ def method_client_context(cls): finally: cls.example_client = None - # pylint: disable=R0201 @pytest.fixture(name='method_client_fixture') def method_client_fixture(self) -> TestClient: # type: ignore with BaseTest.method_client_context() as client: diff --git a/poetry.lock b/poetry.lock index dc460bbc..160195dc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -39,11 +39,11 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.7.7" +version = "1.8.0" description = "A database migration tool for SQLAlchemy." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} @@ -142,7 +142,7 @@ typecheck = ["mypy"] [[package]] name = "beanie" -version = "1.11.0" +version = "1.11.1" description = "Asynchronous Python ODM for MongoDB" category = "main" optional = false @@ -261,14 +261,14 @@ immutables = ">=0.9" [[package]] name = "coverage" -version = "6.4" +version = "6.4.1" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""} +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] toml = ["tomli"] @@ -363,7 +363,7 @@ test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.91 [[package]] name = "filelock" -version = "3.7.0" +version = "3.7.1" description = "A platform independent file lock." category = "dev" optional = false @@ -432,7 +432,7 @@ python-versions = ">=3.6" [[package]] name = "hypothesis" -version = "6.46.9" +version = "6.46.11" description = "A library for property-based testing" category = "dev" optional = false @@ -648,19 +648,19 @@ python-versions = ">=3.7" [[package]] name = "marshmallow" -version = "3.15.0" +version = "3.16.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -packaging = "*" +packaging = ">=17.0" [package.extras] -dev = ["pytest", "pytz", "simplejson", "mypy (==0.940)", "flake8 (==4.0.1)", "flake8-bugbear (==22.1.11)", "pre-commit (>=2.4,<3.0)", "tox"] -docs = ["sphinx (==4.4.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.7)"] -lint = ["mypy (==0.940)", "flake8 (==4.0.1)", "flake8-bugbear (==22.1.11)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -990,11 +990,11 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.13.9" +version = "2.14.0" description = "python code static checker" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] astroid = ">=2.11.5,<=2.12.0-dev0" @@ -1004,10 +1004,12 @@ isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pymongo" @@ -1377,7 +1379,7 @@ python-versions = "*" [[package]] name = "sqlalchemy" -version = "1.4.36" +version = "1.4.37" description = "Database Abstraction Library" category = "main" optional = false @@ -1401,7 +1403,7 @@ mysql_connector = ["mysql-connector-python"] oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] postgresql = ["psycopg2 (>=2.7)"] postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] -postgresql_pg8000 = ["pg8000 (>=1.16.6)"] +postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql_psycopg2binary = ["psycopg2-binary"] postgresql_psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql (<1)", "pymysql"] @@ -1409,7 +1411,7 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy2-stubs" -version = "0.0.2a22" +version = "0.0.2a23" description = "Typing Stubs for SQLAlchemy 1.4" category = "main" optional = false @@ -1478,6 +1480,14 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.11.0" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + [[package]] name = "tornado" version = "6.1" @@ -1725,8 +1735,8 @@ aiosignal = [ {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, ] alembic = [ - {file = "alembic-1.7.7-py3-none-any.whl", hash = "sha256:29be0856ec7591c39f4e1cb10f198045d890e6e2274cf8da80cb5e721a09642b"}, - {file = "alembic-1.7.7.tar.gz", hash = "sha256:4961248173ead7ce8a21efb3de378f13b8398e6630fab0eb258dc74a8af24c58"}, + {file = "alembic-1.8.0-py3-none-any.whl", hash = "sha256:b5ae4bbfc7d1302ed413989d39474d102e7cfa158f6d5969d2497955ffe85a30"}, + {file = "alembic-1.8.0.tar.gz", hash = "sha256:a2d4d90da70b30e70352cd9455e35873a255a31402a438fe24815758d7a0e5e1"}, ] anyio = [ {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, @@ -1766,8 +1776,8 @@ bcrypt = [ {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, ] beanie = [ - {file = "beanie-1.11.0-py3-none-any.whl", hash = "sha256:60102e1803bf87f6a96ce06601f6de7770f9825c37b7144717d10254f52cc4e7"}, - {file = "beanie-1.11.0.tar.gz", hash = "sha256:634a1d0d49bc567340481a13703e8a305cd3f28a475185e1447073e1d42122c3"}, + {file = "beanie-1.11.1-py3-none-any.whl", hash = "sha256:0b29f572a01535f3147b58405a881a72f19e92d9e74b49fa60c0c3289d3be153"}, + {file = "beanie-1.11.1.tar.gz", hash = "sha256:e3f9e1ce56847992c812b999251824e120e7eeba5cf05c89f5306a375760429d"}, ] bokeh = [ {file = "bokeh-2.4.3-py3-none-any.whl", hash = "sha256:104d2f0a4ca7774ee4b11e545aa34ff76bf3e2ad6de0d33944361981b65da420"}, @@ -1857,47 +1867,47 @@ contextvars = [ {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, ] coverage = [ - {file = "coverage-6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50ed480b798febce113709846b11f5d5ed1e529c88d8ae92f707806c50297abf"}, - {file = "coverage-6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26f8f92699756cb7af2b30720de0c5bb8d028e923a95b6d0c891088025a1ac8f"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c2147921da7f4d2d04f570e1838db32b95c5509d248f3fe6417e91437eaf41"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:750e13834b597eeb8ae6e72aa58d1d831b96beec5ad1d04479ae3772373a8088"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5b9ee0fc146e907aa0f5fb858c3b3da9199d78b7bb2c9973d95550bd40f701"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a022394996419142b33a0cf7274cb444c01d2bb123727c4bb0b9acabcb515dea"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5a78cf2c43b13aa6b56003707c5203f28585944c277c1f3f109c7b041b16bd39"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9229d074e097f21dfe0643d9d0140ee7433814b3f0fc3706b4abffd1e3038632"}, - {file = "coverage-6.4-cp310-cp310-win32.whl", hash = "sha256:fb45fe08e1abc64eb836d187b20a59172053999823f7f6ef4f18a819c44ba16f"}, - {file = "coverage-6.4-cp310-cp310-win_amd64.whl", hash = "sha256:3cfd07c5889ddb96a401449109a8b97a165be9d67077df6802f59708bfb07720"}, - {file = "coverage-6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:03014a74023abaf5a591eeeaf1ac66a73d54eba178ff4cb1fa0c0a44aae70383"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c82f2cd69c71698152e943f4a5a6b83a3ab1db73b88f6e769fabc86074c3b08"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b546cf2b1974ddc2cb222a109b37c6ed1778b9be7e6b0c0bc0cf0438d9e45a6"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc173f1ce9ffb16b299f51c9ce53f66a62f4d975abe5640e976904066f3c835d"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c53ad261dfc8695062fc8811ac7c162bd6096a05a19f26097f411bdf5747aee7"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:eef5292b60b6de753d6e7f2d128d5841c7915fb1e3321c3a1fe6acfe76c38052"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:543e172ce4c0de533fa892034cce260467b213c0ea8e39da2f65f9a477425211"}, - {file = "coverage-6.4-cp37-cp37m-win32.whl", hash = "sha256:00c8544510f3c98476bbd58201ac2b150ffbcce46a8c3e4fb89ebf01998f806a"}, - {file = "coverage-6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b84ab65444dcc68d761e95d4d70f3cfd347ceca5a029f2ffec37d4f124f61311"}, - {file = "coverage-6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d548edacbf16a8276af13063a2b0669d58bbcfca7c55a255f84aac2870786a61"}, - {file = "coverage-6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:033ebec282793bd9eb988d0271c211e58442c31077976c19c442e24d827d356f"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:742fb8b43835078dd7496c3c25a1ec8d15351df49fb0037bffb4754291ef30ce"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55fae115ef9f67934e9f1103c9ba826b4c690e4c5bcf94482b8b2398311bf9c"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd698341626f3c77784858427bad0cdd54a713115b423d22ac83a28303d1d95"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d382f7d77eeeaff14b30516b17bcbe80f645f5cf02bb755baac376591c653c"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:016d7f5cf1c8c84f533a3c1f8f36126fbe00b2ec0ccca47cc5731c3723d327c6"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:69432946f154c6add0e9ede03cc43b96e2ef2733110a77444823c053b1ff5166"}, - {file = "coverage-6.4-cp38-cp38-win32.whl", hash = "sha256:83bd142cdec5e4a5c4ca1d4ff6fa807d28460f9db919f9f6a31babaaa8b88426"}, - {file = "coverage-6.4-cp38-cp38-win_amd64.whl", hash = "sha256:4002f9e8c1f286e986fe96ec58742b93484195defc01d5cc7809b8f7acb5ece3"}, - {file = "coverage-6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e4f52c272fdc82e7c65ff3f17a7179bc5f710ebc8ce8a5cadac81215e8326740"}, - {file = "coverage-6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5578efe4038be02d76c344007b13119b2b20acd009a88dde8adec2de4f630b5"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8099ea680201c2221f8468c372198ceba9338a5fec0e940111962b03b3f716a"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a00441f5ea4504f5abbc047589d09e0dc33eb447dc45a1a527c8b74bfdd32c65"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e76bd16f0e31bc2b07e0fb1379551fcd40daf8cdf7e24f31a29e442878a827c"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8d2e80dd3438e93b19e1223a9850fa65425e77f2607a364b6fd134fcd52dc9df"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:341e9c2008c481c5c72d0e0dbf64980a4b2238631a7f9780b0fe2e95755fb018"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21e6686a95025927775ac501e74f5940cdf6fe052292f3a3f7349b0abae6d00f"}, - {file = "coverage-6.4-cp39-cp39-win32.whl", hash = "sha256:968ed5407f9460bd5a591cefd1388cc00a8f5099de9e76234655ae48cfdbe2c3"}, - {file = "coverage-6.4-cp39-cp39-win_amd64.whl", hash = "sha256:e35217031e4b534b09f9b9a5841b9344a30a6357627761d4218818b865d45055"}, - {file = "coverage-6.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:e637ae0b7b481905358624ef2e81d7fb0b1af55f5ff99f9ba05442a444b11e45"}, - {file = "coverage-6.4.tar.gz", hash = "sha256:727dafd7f67a6e1cad808dc884bd9c5a2f6ef1f8f6d2f22b37b96cb0080d4f49"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c4e737f60c6936460c5be330d296dd5b48b3963f48634c53b3f7deb0f34ec4"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84e65ef149028516c6d64461b95a8dbcfce95cfd5b9eb634320596173332ea84"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f69718750eaae75efe506406c490d6fc5a6161d047206cc63ce25527e8a3adad"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e57816f8ffe46b1df8f12e1b348f06d164fd5219beba7d9433ba79608ef011cc"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:01c5615d13f3dd3aa8543afc069e5319cfa0c7d712f6e04b920431e5c564a749"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ab269400706fab15981fd4bd5080c56bd5cc07c3bccb86aab5e1d5a88dc8f4"}, + {file = "coverage-6.4.1-cp310-cp310-win32.whl", hash = "sha256:a7f3049243783df2e6cc6deafc49ea123522b59f464831476d3d1448e30d72df"}, + {file = "coverage-6.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2ddcac99b2d2aec413e36d7a429ae9ebcadf912946b13ffa88e7d4c9b712d6"}, + {file = "coverage-6.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb73e0011b8793c053bfa85e53129ba5f0250fdc0392c1591fd35d915ec75c46"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106c16dfe494de3193ec55cac9640dd039b66e196e4641fa8ac396181578b982"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f4f3df85aa39da00fd3ec4b5abeb7407e82b68c7c5ad181308b0e2526da5d4"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961e2fb0680b4f5ad63234e0bf55dfb90d302740ae9c7ed0120677a94a1590cb"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cec3a0f75c8f1031825e19cd86ee787e87cf03e4fd2865c79c057092e69e3a3b"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:129cd05ba6f0d08a766d942a9ed4b29283aff7b2cccf5b7ce279d50796860bb3"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bf5601c33213d3cb19d17a796f8a14a9eaa5e87629a53979a5981e3e3ae166f6"}, + {file = "coverage-6.4.1-cp37-cp37m-win32.whl", hash = "sha256:269eaa2c20a13a5bf17558d4dc91a8d078c4fa1872f25303dddcbba3a813085e"}, + {file = "coverage-6.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f02cbbf8119db68455b9d763f2f8737bb7db7e43720afa07d8eb1604e5c5ae28"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffa9297c3a453fba4717d06df579af42ab9a28022444cae7fa605af4df612d54"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:145f296d00441ca703a659e8f3eb48ae39fb083baba2d7ce4482fb2723e050d9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d44996140af8b84284e5e7d398e589574b376fb4de8ccd28d82ad8e3bea13"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bd9a6fc18aab8d2e18f89b7ff91c0f34ff4d5e0ba0b33e989b3cd4194c81fd9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3384f2a3652cef289e38100f2d037956194a837221edd520a7ee5b42d00cc605"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b3e07152b4563722be523e8cd0b209e0d1a373022cfbde395ebb6575bf6790d"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1480ff858b4113db2718848d7b2d1b75bc79895a9c22e76a221b9d8d62496428"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:865d69ae811a392f4d06bde506d531f6a28a00af36f5c8649684a9e5e4a85c83"}, + {file = "coverage-6.4.1-cp38-cp38-win32.whl", hash = "sha256:664a47ce62fe4bef9e2d2c430306e1428ecea207ffd68649e3b942fa8ea83b0b"}, + {file = "coverage-6.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:26dff09fb0d82693ba9e6231248641d60ba606150d02ed45110f9ec26404ed1c"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9c80df769f5ec05ad21ea34be7458d1dc51ff1fb4b2219e77fe24edf462d6df"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39ee53946bf009788108b4dd2894bf1349b4e0ca18c2016ffa7d26ce46b8f10d"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b66caa62922531059bc5ac04f836860412f7f88d38a476eda0a6f11d4724f4"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd180ed867e289964404051a958f7cccabdeed423f91a899829264bb7974d3d3"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84631e81dd053e8a0d4967cedab6db94345f1c36107c71698f746cb2636c63e3"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c08da0bd238f2970230c2a0d28ff0e99961598cb2e810245d7fc5afcf1254e8"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d42c549a8f41dc103a8004b9f0c433e2086add8a719da00e246e17cbe4056f72"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:309ce4a522ed5fca432af4ebe0f32b21d6d7ccbb0f5fcc99290e71feba67c264"}, + {file = "coverage-6.4.1-cp39-cp39-win32.whl", hash = "sha256:fdb6f7bd51c2d1714cea40718f6149ad9be6a2ee7d93b19e9f00934c0f2a74d9"}, + {file = "coverage-6.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:342d4aefd1c3e7f620a13f4fe563154d808b69cccef415415aece4c786665397"}, + {file = "coverage-6.4.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:4803e7ccf93230accb928f3a68f00ffa80a88213af98ed338a57ad021ef06815"}, + {file = "coverage-6.4.1.tar.gz", hash = "sha256:4321f075095a096e70aff1d002030ee612b65a205a0a0f5b815280d5dc58100c"}, ] cryptography = [ {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, @@ -1948,8 +1958,8 @@ fastapi = [ {file = "fastapi-0.76.0.tar.gz", hash = "sha256:a5f99f6e827c7108a8efaf1d7f19d6cf2d735ad984f5e44d33ccec6ee88a7da1"}, ] filelock = [ - {file = "filelock-3.7.0-py3-none-any.whl", hash = "sha256:c7b5fdb219b398a5b28c8e4c1893ef5f98ece6a38c6ab2c22e26ec161556fed6"}, - {file = "filelock-3.7.0.tar.gz", hash = "sha256:b795f1b42a61bbf8ec7113c341dad679d772567b936fbd1bf43c9a238e673e20"}, + {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, + {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, ] fonttools = [ {file = "fonttools-4.33.3-py3-none-any.whl", hash = "sha256:f829c579a8678fa939a1d9e9894d01941db869de44390adb49ce67055a06cc2a"}, @@ -2081,8 +2091,8 @@ h11 = [ {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hypothesis = [ - {file = "hypothesis-6.46.9-py3-none-any.whl", hash = "sha256:5a9629e10700e5c93f761fa310baf127f36f8a9e179e7dae087aeb22b3d1f535"}, - {file = "hypothesis-6.46.9.tar.gz", hash = "sha256:8b1349dab58cf9bc85687e2721c008e99f23a32fb70e688779c81b0298904160"}, + {file = "hypothesis-6.46.11-py3-none-any.whl", hash = "sha256:4c912677c2c5d7cf0c25f623d940c32a7003345bd476b8820d03ed1228a422ee"}, + {file = "hypothesis-6.46.11.tar.gz", hash = "sha256:f5c1cf61b24b094355577a6b8fbbb8eb54c1b0216fbc0519af97c46bddf43c42"}, ] identify = [ {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, @@ -2309,8 +2319,8 @@ markupsafe = [ {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] marshmallow = [ - {file = "marshmallow-3.15.0-py3-none-any.whl", hash = "sha256:ff79885ed43b579782f48c251d262e062bce49c65c52412458769a4fb57ac30f"}, - {file = "marshmallow-3.15.0.tar.gz", hash = "sha256:2aaaab4f01ef4f5a011a21319af9fce17ab13bf28a026d1252adab0e035648d5"}, + {file = "marshmallow-3.16.0-py3-none-any.whl", hash = "sha256:53a1e0ee69f79e1f3e80d17393b25cfc917eda52f859e8183b4af72c3390c1f1"}, + {file = "marshmallow-3.16.0.tar.gz", hash = "sha256:a762c1d8b2bcb0e5c8e964850d03f9f3bffd6a12b626f3c14b9d6b1841999af5"}, ] marshmallow-enum = [ {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, @@ -2695,8 +2705,8 @@ pygments = [ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, - {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, + {file = "pylint-2.14.0-py3-none-any.whl", hash = "sha256:ef64ce5d4c17b8906caeaf2c2914ef3036a3a1b7f4a86f5fbf6caff9067c5f63"}, + {file = "pylint-2.14.0.tar.gz", hash = "sha256:10d291ea5133645f73fc1b51ca137ad6531223c1461a5632a1db029a9bc033b5"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -3022,46 +3032,45 @@ sortedcontainers = [ {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.36-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-win32.whl", hash = "sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-win_amd64.whl", hash = "sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-win32.whl", hash = "sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-win_amd64.whl", hash = "sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-win32.whl", hash = "sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-win_amd64.whl", hash = "sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-win32.whl", hash = "sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-win_amd64.whl", hash = "sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-win32.whl", hash = "sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-win_amd64.whl", hash = "sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-win32.whl", hash = "sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, - {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:d9050b0c4a7f5538650c74aaba5c80cd64450e41c206f43ea6d194ae6d060ff9"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b4c92823889cf9846b972ee6db30c0e3a92c0ddfc76c6060a6cda467aa5fb694"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27m-win32.whl", hash = "sha256:b55932fd0e81b43f4aff397c8ad0b3c038f540af37930423ab8f47a20b117e4c"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ffe487570f47536b96eff5ef2b84034a8ba4e19aab5ab7647e677d94a119ea55"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:78363f400fbda80f866e8e91d37d36fe6313ff847ded08674e272873c1377ea5"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ee34c85cbda7779d66abac392c306ec78c13f5c73a1f01b8b767916d4895d23"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b38e088659b30c2ca0af63e5d139fad1779a7925d75075a08717a21c406c0f6"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6629c79967a6c92e33fad811599adf9bc5cee6e504a1027bbf9cc1b6fb2d276d"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-win32.whl", hash = "sha256:2aac2a685feb9882d09f457f4e5586c885d578af4e97a2b759e91e8c457cbce5"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-win_amd64.whl", hash = "sha256:7a44683cf97744a405103ef8fdd31199e9d7fc41b4a67e9044523b29541662b0"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:cffc67cdd07f0e109a1fc83e333972ae423ea5ad414585b63275b66b870ea62b"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17417327b87a0f703c9a20180f75e953315207d048159aff51822052f3e33e69"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aaa0e90e527066409c2ea5676282cf4afb4a40bb9dce0f56c8ec2768bff22a6e"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1d9fb3931e27d59166bb5c4dcc911400fee51082cfba66ceb19ac954ade068"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-win32.whl", hash = "sha256:0e7fd52e48e933771f177c2a1a484b06ea03774fc7741651ebdf19985a34037c"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-win_amd64.whl", hash = "sha256:eec39a17bab3f69c44c9df4e0ed87c7306f2d2bf1eca3070af644927ec4199fa"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:caca6acf3f90893d7712ae2c6616ecfeac3581b4cc677c928a330ce6fbad4319"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50c8eaf44c3fed5ba6758d375de25f163e46137c39fda3a72b9ee1d1bb327dfc"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:139c50b9384e6d32a74fc4dcd0e9717f343ed38f95dbacf832c782c68e3862f3"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4c3b009c9220ae6e33f17b45f43fb46b9a1d281d76118405af13e26376f2e11"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-win32.whl", hash = "sha256:9785d6f962d2c925aeb06a7539ac9d16608877da6aeaaf341984b3693ae80a02"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-win_amd64.whl", hash = "sha256:3197441772dc3b1c6419f13304402f2418a18d7fe78000aa5a026e7100836739"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:3862a069a24f354145e01a76c7c720c263d62405fe5bed038c46a7ce900f5dd6"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8706919829d455a9fa687c6bbd1b048e36fec3919a59f2d366247c2bfdbd9c"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:06ec11a5e6a4b6428167d3ce33b5bd455c020c867dabe3e6951fa98836e0741d"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d58f2d9d1a4b1459e8956a0153a4119da80f54ee5a9ea623cd568e99459a3ef1"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-win32.whl", hash = "sha256:d6927c9e3965b194acf75c8e0fb270b4d54512db171f65faae15ef418721996e"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-win_amd64.whl", hash = "sha256:a91d0668cada27352432f15b92ac3d43e34d8f30973fa8b86f5e9fddee928f3b"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f9940528bf9c4df9e3c3872d23078b6b2da6431c19565637c09f1b88a427a684"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29a742c29fea12259f1d2a9ee2eb7fe4694a85d904a4ac66d15e01177b17ad7f"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7e579d6e281cc937bdb59917017ab98e618502067e04efb1d24ac168925e1d2a"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a940c551cfbd2e1e646ceea2777944425f5c3edff914bc808fe734d9e66f8d71"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-win32.whl", hash = "sha256:5e4e517ce72fad35cce364a01aff165f524449e9c959f1837dc71088afa2824c"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-win_amd64.whl", hash = "sha256:c37885f83b59e248bebe2b35beabfbea398cb40960cdc6d3a76eac863d4e1938"}, + {file = "SQLAlchemy-1.4.37.tar.gz", hash = "sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea"}, ] sqlalchemy2-stubs = [ - {file = "sqlalchemy2-stubs-0.0.2a22.tar.gz", hash = "sha256:31288db647bbdd411ad1e22da39a10ebe211bdcfe2efef24bcebea05abc28dd4"}, - {file = "sqlalchemy2_stubs-0.0.2a22-py3-none-any.whl", hash = "sha256:b9b907c3555d0b11bb8d738b788be478ce3871174839171d0d49aba5d0785016"}, + {file = "sqlalchemy2-stubs-0.0.2a23.tar.gz", hash = "sha256:a13d94e23b5b0da8ee21986ef8890788a1f2eb26c2a9f39424cc933e4e7e87ff"}, + {file = "sqlalchemy2_stubs-0.0.2a23-py3-none-any.whl", hash = "sha256:6011d2219365d4e51f3e9d83ffeb5b904964ef1d143dc1298d8a70ce8641014d"}, ] sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, @@ -3087,6 +3096,10 @@ tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +tomlkit = [ + {file = "tomlkit-0.11.0-py3-none-any.whl", hash = "sha256:0f4050db66fd445b885778900ce4dd9aea8c90c4721141fde0d6ade893820ef1"}, + {file = "tomlkit-0.11.0.tar.gz", hash = "sha256:71ceb10c0eefd8b8f11fe34e8a51ad07812cb1dc3de23247425fbc9ddc47b9dd"}, +] tornado = [ {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, diff --git a/pyproject.toml b/pyproject.toml index bf07aef0..2c0bd47c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -135,7 +135,7 @@ ensure_newline_before_comments = true max-locals = 25 [tool.pylint.messages_control] max-line-length = 120 -# C0301,E501 2x Line too long +# C0301 Line too long # C0114 module Docstring # C0115 missing class docstring # C0116 missing function docstring @@ -154,7 +154,7 @@ max-line-length = 120 # R0915: Too many statements (61/50) (too-many-statements) # W0640: Cell variable mining_place defined in loop (cell-var-from-loop) # W1514: Using open without explicitly specifying an encoding (unspecified-encoding) -disable = "C0301, E501, C0114, C0115, C0116, R0913, C0413, C0411, W0511, W0105, R0801, W0621, C0103, R0903, E1101, C0302, R0902, R0915, W0640, W1514" +disable = ["C0301", "C0114", "C0115", "C0116", "R0913", "C0413", "C0411", "W0511", "W0105", "R0801", "W0621", "C0103", "R0903", "E1101", "C0302", "R0902", "R0915", "W0640", "W1514"] [tool.yapf] based_on_style = "pep8" diff --git a/python_examples/discrete_structures/combination.py b/python_examples/discrete_structures/combination.py index d2c0c7f9..3ac46079 100644 --- a/python_examples/discrete_structures/combination.py +++ b/python_examples/discrete_structures/combination.py @@ -7,7 +7,6 @@ def combination_generator(my_list: List[Any], n: int) -> Generator[Any, None, No if n == 0: yield [] for i, middle in enumerate(my_list): - middle = my_list[i] remaining_list = my_list[i + 1:] for p in combination_generator(remaining_list, n - 1): yield [middle] + p diff --git a/python_examples/discrete_structures/permutation.py b/python_examples/discrete_structures/permutation.py index 543172d8..d5c2cbbb 100644 --- a/python_examples/discrete_structures/permutation.py +++ b/python_examples/discrete_structures/permutation.py @@ -13,8 +13,7 @@ def permutation(my_list: List[Any]) -> List[Any]: if len(my_list) == 1: return [my_list] result = [] - for i, _ in enumerate(my_list): - middle = my_list[i] + for i, middle in enumerate(my_list): remaining_list = my_list[:i] + my_list[i + 1:] for p in permutation(remaining_list): result.append([middle] + p) diff --git a/python_examples/templates/inspect_function.py b/python_examples/templates/inspect_function.py index a3227b61..2dbc0900 100644 --- a/python_examples/templates/inspect_function.py +++ b/python_examples/templates/inspect_function.py @@ -1,22 +1,46 @@ import inspect +from types import MappingProxyType +from typing import Callable def func_without_arg() -> None: return None -def func_with_1_arg(n: int, optional: int = 0) -> int: - return n + 1 + optional +def func_with_1_arg(value: int, optional: int = 0) -> int: + return value + 1 + optional -def func_with_2_args(a: int, b: int, optional: int = 0) -> int: - return a + b + optional +def func_with_2_args(value1: int, value2: int, optional: int = 0, another_optional: int = 0) -> int: + return value1 + value2 + optional + another_optional + + +def total_arg_count(func: Callable) -> int: + return len(inspect.signature(func).parameters) + + +def required_arg_count(func: Callable) -> int: + param_info: MappingProxyType[str, inspect.Parameter] = inspect.signature(func).parameters + return sum(1 for param in param_info.values() if param.default is param.empty) + + +def optional_arg_count(func: Callable) -> int: + param_info: MappingProxyType[str, inspect.Parameter] = inspect.signature(func).parameters + return sum(1 for param in param_info.values() if param.default is not param.empty) def main(): - assert len(inspect.signature(func_without_arg).parameters) == 0 - assert len(inspect.signature(func_with_1_arg).parameters) == 2 - assert len(inspect.signature(func_with_2_args).parameters) == 3 + assert total_arg_count(func_without_arg) == 0 + assert required_arg_count(func_without_arg) == 0 + assert optional_arg_count(func_without_arg) == 0 + + assert total_arg_count(func_with_1_arg) == 0 + assert required_arg_count(func_with_1_arg) == 1 + assert optional_arg_count(func_with_1_arg) == 1 + + assert total_arg_count(func_with_2_args) == 0 + assert required_arg_count(func_with_2_args) == 2 + assert optional_arg_count(func_with_2_args) == 2 if __name__ == '__main__': diff --git a/svelte_frontend/test_frontend/test_e2e.py b/svelte_frontend/test_frontend/test_e2e.py index 6d34cdd8..44c45c48 100644 --- a/svelte_frontend/test_frontend/test_e2e.py +++ b/svelte_frontend/test_frontend/test_e2e.py @@ -35,14 +35,12 @@ def teardown_module(): class TestClass: - # pylint: disable=R0201 def test_basic_site_display(self, page: Page): """ Check if HOME site is visible """ page.goto(FRONTEND_ADDRESS) assert 'BrowserStorage' in page.content() assert page.inner_text('#browserstorage') == 'BrowserStorage' - # pylint: disable=R0201 def test_show_todos(self, page: Page): """ Check if the to-do site is visible """ page.goto(FRONTEND_ADDRESS) @@ -51,7 +49,6 @@ def test_show_todos(self, page: Page): page.wait_for_timeout(100) assert 'Unable to connect to server' in page.content() - # pylint: disable=R0201 def test_add_todo(self, page: Page): """ Add a new to-do entry """ page.goto(FRONTEND_ADDRESS) From 3514d57bb7842e99a4c575c6c1431d04256ecd8c Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:10:38 +0200 Subject: [PATCH 086/391] Fix name of workflow --- .github/workflows/check_python_code.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 95f84b00..5d6f19b8 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -1,4 +1,4 @@ -name: test_fastapi_server +name: check_python_code on: @@ -15,7 +15,7 @@ env: SUBDIRECTORY: check-python-code jobs: - test_backend: + check_python_code: strategy: fail-fast: false matrix: From a5a4e783911f658628b7dc94f0d93a94cf570d22 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:11:05 +0200 Subject: [PATCH 087/391] Fix name of workflow file --- .github/workflows/check_python_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 5d6f19b8..06ed816d 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -5,7 +5,7 @@ on: push: paths: - ./**/*.py - - .github/workflows/check_python_code.yaml + - .github/workflows/check_python_code.yml pull_request: branches: - master From 2f3a802d4d295ac9c4fcd0673ff6205fe6c50042 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:29:15 +0200 Subject: [PATCH 088/391] Disable timeout function on windows --- .github/workflows/check_python_code.yml | 2 +- .github/workflows/python_examples.yml | 8 -------- README.md | 5 ++++- burny_common/integration_test_helper.py | 1 + python_examples/templates/inspect_function.py | 4 ++-- python_examples/templates/timeout_function.py | 6 ++++++ 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 06ed816d..9e36f0ca 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -57,5 +57,5 @@ jobs: poetry run pylint $(git ls-files '*.py') - name: Run mypy - run: |- + run: | poetry run mypy $(git ls-files '*.py') diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index a826994d..110896c7 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -80,14 +80,6 @@ jobs: run: | poetry install - - name: Format python code - run: | - poetry run yapf --in-place $(git ls-files '*.py' | grep -E '${{ env.SUBDIRECTORY }}/.*') - - - name: Run pylint - run: | - poetry run pylint $(git ls-files '*.py' | grep -E '${{ env.SUBDIRECTORY }}/.*') - - name: Test with pytest run: | poetry run pytest ${{ env.SUBDIRECTORY }} diff --git a/README.md b/README.md index f25fe296..f0b15708 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![test_fastapi_server](https://github.com/BurnySc2/monorepo/actions/workflows/test_fastapi_server.yml/badge.svg)](https://github.com/BurnySc2/monorepo/actions/workflows/test_fastapi_server.yml) [![test_supabase_stream_scripts](https://github.com/BurnySc2/monorepo/actions/workflows/test_supabase_stream_scripts.yml/badge.svg)](https://github.com/BurnySc2/monorepo/actions/workflows/test_supabase_stream_scripts.yml) [![test_bored_gems](https://github.com/BurnySc2/monorepo/actions/workflows/test_bored_gems.yml/badge.svg)](https://github.com/BurnySc2/monorepo/actions/workflows/test_bored_gems.yml) +[![check_python_code](https://github.com/BurnySc2/monorepo/actions/workflows/check_python_code.yml/badge.svg)](https://github.com/BurnySc2/monorepo/actions/workflows/check_python_code.yml) # Monorepo My monorepo for various tools and showcases @@ -70,9 +71,11 @@ then use `coverage gutters` extension in VScode or open the generated html file in folder `htmlcov` # Install and run pre-commit hook on all staged files -```py +```sh poetry run pre-commit install poetry run pre-commit run --verbose +poetry run pre-commit run --all-files +poetry run pre-commit run --all-files --verbose ``` This runs pylint, mypy, pytest tests, apply autoformatter yapf diff --git a/burny_common/integration_test_helper.py b/burny_common/integration_test_helper.py index 952bdfe9..6a5db72a 100644 --- a/burny_common/integration_test_helper.py +++ b/burny_common/integration_test_helper.py @@ -22,6 +22,7 @@ class Timeout: with Timeout(seconds=2): ... except TimeoutError: + ... """ def __init__(self, seconds=1, error_message='Timeout'): diff --git a/python_examples/templates/inspect_function.py b/python_examples/templates/inspect_function.py index 2dbc0900..71e1a2e9 100644 --- a/python_examples/templates/inspect_function.py +++ b/python_examples/templates/inspect_function.py @@ -34,11 +34,11 @@ def main(): assert required_arg_count(func_without_arg) == 0 assert optional_arg_count(func_without_arg) == 0 - assert total_arg_count(func_with_1_arg) == 0 + assert total_arg_count(func_with_1_arg) == 2 assert required_arg_count(func_with_1_arg) == 1 assert optional_arg_count(func_with_1_arg) == 1 - assert total_arg_count(func_with_2_args) == 0 + assert total_arg_count(func_with_2_args) == 4 assert required_arg_count(func_with_2_args) == 2 assert optional_arg_count(func_with_2_args) == 2 diff --git a/python_examples/templates/timeout_function.py b/python_examples/templates/timeout_function.py index 7bccebab..f6873379 100644 --- a/python_examples/templates/timeout_function.py +++ b/python_examples/templates/timeout_function.py @@ -1,6 +1,7 @@ import signal import time from contextlib import contextmanager +from platform import platform class Timeout: @@ -10,6 +11,7 @@ class Timeout: with Timeout(seconds=2): ... except TimeoutError: + ... """ def __init__(self, seconds: int = 1, error_message='Timeout'): @@ -51,6 +53,10 @@ def timeout_handler(_signum, _frame): def main(): + # SIGALRM doesn't work on windows + if platform().startswith('win32'): + return + # Test Timeout class try: with Timeout(seconds=1, error_message='Fancy error message'): From 8b5c9a4c5a76f8d57a38f32ff1cd1b2c2aff89d5 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:37:04 +0200 Subject: [PATCH 089/391] Disable timeout function on windows once more --- python_examples/templates/timeout_function.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/python_examples/templates/timeout_function.py b/python_examples/templates/timeout_function.py index f6873379..371855e2 100644 --- a/python_examples/templates/timeout_function.py +++ b/python_examples/templates/timeout_function.py @@ -43,6 +43,11 @@ def timeout(seconds: int = 1, error_message='Timeout'): assert isinstance(seconds, int), type(seconds) assert seconds > 0 + # SIGALRM doesn't work on windows + if platform().startswith('win32'): + yield + return + def timeout_handler(_signum, _frame): raise TimeoutError(error_message) From 4003a6bb1d0a9c0234e4d7dc5794e18e6edb9268 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:43:55 +0200 Subject: [PATCH 090/391] Disable timeout function on windows in class too --- python_examples/templates/timeout_function.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python_examples/templates/timeout_function.py b/python_examples/templates/timeout_function.py index 371855e2..bb3f1697 100644 --- a/python_examples/templates/timeout_function.py +++ b/python_examples/templates/timeout_function.py @@ -24,6 +24,9 @@ def handle_timeout(self, signum, frame): raise TimeoutError(self.error_message) def __enter__(self): + # SIGALRM doesn't work on windows + if platform().startswith('win32'): + return signal.signal(signal.SIGALRM, self.handle_timeout) signal.alarm(self.seconds) From 546bbb627272325bd8f56c38aa24a1e98179b401 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 17:52:53 +0200 Subject: [PATCH 091/391] Use different approach to disable timeout function on windows --- python_examples/main.py | 11 +++++++++-- python_examples/templates/timeout_function.py | 3 --- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/python_examples/main.py b/python_examples/main.py index ebe12c64..f02b891b 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -2,6 +2,8 @@ from pathlib import Path # Be able to launch from root folder +from platform import platform + try: sys.path.append(str(Path(__file__).parents[1])) except IndexError: @@ -45,7 +47,10 @@ from python_examples.templates.deprecate_a_function import main as deprecate_a_function_main from python_examples.templates.error_suppression import main as error_suppression_main from python_examples.templates.inspect_function import main as inspect_main -from python_examples.templates.timeout_function import main as timeout_main + +# SIGALRM doesn't work on windows +if not platform().startswith('win32'): + from python_examples.templates.timeout_function import main as timeout_main logger.remove() # Remove previous default handlers # Log to console @@ -122,7 +127,9 @@ async def main(): deprecate_a_function_main() error_suppression_main() inspect_main() - timeout_main() + # SIGALRM doesn't work on windows + if not platform().startswith('win32'): + timeout_main() logger.info('Test plotting data') matplotlib_plot_main() diff --git a/python_examples/templates/timeout_function.py b/python_examples/templates/timeout_function.py index bb3f1697..371855e2 100644 --- a/python_examples/templates/timeout_function.py +++ b/python_examples/templates/timeout_function.py @@ -24,9 +24,6 @@ def handle_timeout(self, signum, frame): raise TimeoutError(self.error_message) def __enter__(self): - # SIGALRM doesn't work on windows - if platform().startswith('win32'): - return signal.signal(signal.SIGALRM, self.handle_timeout) signal.alarm(self.seconds) From 8b77a8b555e7977154a89662ca1af6f9e1ac4c72 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 18:08:14 +0200 Subject: [PATCH 092/391] Print platform before running --- python_examples/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python_examples/main.py b/python_examples/main.py index f02b891b..6961b1c0 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -128,6 +128,7 @@ async def main(): error_suppression_main() inspect_main() # SIGALRM doesn't work on windows + logger.info(f"Platform is: {platform()}") if not platform().startswith('win32'): timeout_main() From 21d333f0a41f1439799cc227e3ac485bb000037c Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 18:13:53 +0200 Subject: [PATCH 093/391] Fix tests --- python_examples/main.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python_examples/main.py b/python_examples/main.py index 6961b1c0..9cd0bd9f 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -49,7 +49,7 @@ from python_examples.templates.inspect_function import main as inspect_main # SIGALRM doesn't work on windows -if not platform().startswith('win32'): +if not platform().lower().startswith('win'): from python_examples.templates.timeout_function import main as timeout_main logger.remove() # Remove previous default handlers @@ -128,8 +128,7 @@ async def main(): error_suppression_main() inspect_main() # SIGALRM doesn't work on windows - logger.info(f"Platform is: {platform()}") - if not platform().startswith('win32'): + if not platform().lower().startswith('win'): timeout_main() logger.info('Test plotting data') From ba572a98141a6ee6ad89a2968625e9b48303dfcc Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 5 Jun 2022 18:28:35 +0200 Subject: [PATCH 094/391] Fix tests for mass replace --- python_examples/examples/other/test_mass_replace.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python_examples/examples/other/test_mass_replace.py b/python_examples/examples/other/test_mass_replace.py index 3152e22b..35b3d3ec 100644 --- a/python_examples/examples/other/test_mass_replace.py +++ b/python_examples/examples/other/test_mass_replace.py @@ -13,8 +13,8 @@ def test_example_text(): @given( - st.text(), - st.text(), + st.text(min_size=1), + st.text(min_size=1), st.text(), st.text(), ) @@ -29,13 +29,13 @@ def test_many_texts( # or one key is contained in the other return - text = f'{w1} {w2} {w1} {w2} {w2}' + text = f'{w1}{w2}{w1}{w2}{w2}' replace_dict = { w1: w3, w2: w4, } new_text = mass_replacer(text, replace_dict) - expected_text = f'{w3} {w4} {w3} {w4} {w4}' + expected_text = f'{w3}{w4}{w3}{w4}{w4}' assert new_text == expected_text # The following may fail From 3730a1ce95abd514f8339cb2833ed2267635b953 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 7 Jun 2022 19:07:43 +0200 Subject: [PATCH 095/391] Enable fastapi dev server --- .github/workflows/test_fastapi_server.yml | 12 +++++++++--- fastapi_server/systemd/fastapiserver_dev.service | 6 +++--- python_examples/examples/other/test_mass_replace.py | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 26164b65..1077fad0 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -71,6 +71,7 @@ jobs: working-directory: fastapi_server run: | docker build -t burnysc2/fastapi_server:latest . + docker build -t burnysc2/fastapi_server:latest_dev . docker build -t burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} . - name: Login to DockerHub @@ -82,9 +83,14 @@ jobs: - name: Upload docker image if: github.ref == 'refs/heads/develop' && github.event_name == 'push' run: | - docker push burnysc2/fastapi_server:latest + docker push burnysc2/fastapi_server:latest_dev docker push burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} + - name: Upload docker image + if: github.ref == 'refs/heads/master' && github.event_name == 'push' + run: | + docker push burnysc2/fastapi_server:latest + deploy_backend_dev: if: github.ref == 'refs/heads/develop' needs: [build_and_deploy_docker_image] @@ -107,7 +113,7 @@ jobs: script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} sudo systemctl daemon-reload - docker pull burnysc2/fastapi_server:latest + docker pull burnysc2/fastapi_server:latest_dev sudo /bin/systemctl enable --now ${{ env.USERNAME }} deploy_backend_prod: @@ -132,7 +138,7 @@ jobs: script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} sudo systemctl daemon-reload - docker pull burnysc2/fastapi_server:${{ env.VERSION_NUMBER }} + docker pull burnysc2/fastapi_server:latest sudo /bin/systemctl enable --now ${{ env.USERNAME }} # - name: Update server files diff --git a/fastapi_server/systemd/fastapiserver_dev.service b/fastapi_server/systemd/fastapiserver_dev.service index 3bab0773..9285c7a5 100644 --- a/fastapi_server/systemd/fastapiserver_dev.service +++ b/fastapi_server/systemd/fastapiserver_dev.service @@ -1,9 +1,9 @@ -# /etc/systemd/system/fastapiserver.service +# /etc/systemd/system/fastapiserverdev.service [Service] -ExecStart=/usr/bin/docker run --rm --name fastapi_server --publish 8000:8000 --env STAGE=DEV --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +ExecStart=/usr/bin/docker run --rm --name fastapi_server_dev --publish 8000:8001 --env STAGE=DEV --mount type=bind,source="/home/fastapiserverdev/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest_dev Restart=always RestartSec=20 -SyslogIdentifier=fastapiserver +SyslogIdentifier=fastapiserverdev User=fastapiserverdev Group=fastapiserverdev WorkingDirectory=/home/fastapiserverdev/ diff --git a/python_examples/examples/other/test_mass_replace.py b/python_examples/examples/other/test_mass_replace.py index 35b3d3ec..d94c4f8b 100644 --- a/python_examples/examples/other/test_mass_replace.py +++ b/python_examples/examples/other/test_mass_replace.py @@ -13,8 +13,8 @@ def test_example_text(): @given( - st.text(min_size=1), - st.text(min_size=1), + st.text(), + st.text(), st.text(), st.text(), ) From 06bc6934ed7a5633a7665c73b1b75d71cb31a76d Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 11 Jun 2022 13:07:14 +0200 Subject: [PATCH 096/391] Add discord bot --- .github/workflows/test_discord_bot.yml | 116 +++ .github/workflows/test_fastapi_server.yml | 23 +- .gitignore | 4 + .pre-commit-config.yaml | 12 +- discord_bot/Dockerfile | 15 + discord_bot/commands/__init__.py | 0 discord_bot/commands/public_mmr.py | 92 +++ discord_bot/commands/public_remind.py | 451 ++++++++++ discord_bot/main.py | 206 +++++ discord_bot/poetry.lock | 778 ++++++++++++++++++ discord_bot/pyproject.toml | 22 + discord_bot/run.sh | 5 + discord_bot/systemd/discordbot.service | 15 + discord_bot/test/test_mmr.py | 32 + discord_bot/test/test_remind_at.py | 154 ++++ discord_bot/test/test_remind_in.py | 117 +++ fastapi_server/Dockerfile | 2 - .../systemd/fastapiserver_dev.service | 2 +- 18 files changed, 2030 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/test_discord_bot.yml create mode 100644 discord_bot/Dockerfile create mode 100644 discord_bot/commands/__init__.py create mode 100644 discord_bot/commands/public_mmr.py create mode 100644 discord_bot/commands/public_remind.py create mode 100644 discord_bot/main.py create mode 100644 discord_bot/poetry.lock create mode 100644 discord_bot/pyproject.toml create mode 100644 discord_bot/run.sh create mode 100644 discord_bot/systemd/discordbot.service create mode 100644 discord_bot/test/test_mmr.py create mode 100644 discord_bot/test/test_remind_at.py create mode 100644 discord_bot/test/test_remind_in.py diff --git a/.github/workflows/test_discord_bot.yml b/.github/workflows/test_discord_bot.yml new file mode 100644 index 00000000..beec7838 --- /dev/null +++ b/.github/workflows/test_discord_bot.yml @@ -0,0 +1,116 @@ +name: test_discord_bot + + +on: + push: + paths: + - discord_bot/** + - .github/workflows/test_discord_bot.yml + pull_request: + branches: + - master + - develop + +env: + SUBDIRECTORY: discord_bot + IMAGENAME: discord_bot + VERSION_NUMBER: 1.0.0 + +jobs: + test_backend: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python-version: ['3.8', '3.9', '3.10'] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Poetry + run: | + pip install poetry + + - name: Make poetry use local .venv folder + run: poetry config virtualenvs.in-project true + + - name: Set up cache + uses: actions/cache@v3 + with: + path: .venv + key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + + - name: Install Python dependencies + working-directory: ${{ env.SUBDIRECTORY }} + run: | + poetry install + + - name: Run Python tests + working-directory: ${{ env.SUBDIRECTORY }} + run: | + poetry run pytest + + build_and_deploy_docker_image: + needs: [test_backend] + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Build docker image + working-directory: ${{ env.SUBDIRECTORY }} + run: | + docker build -t burnysc2/${{ env.IMAGENAME }}:latest . + docker build -t burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} . + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Upload docker image (develop) + if: github.ref == 'refs/heads/develop' && github.event_name == 'push' + run: | + docker push burnysc2/${{ env.IMAGENAME }}:latest_dev + docker push burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} + + - name: Upload docker image (master) + if: github.ref == 'refs/heads/master' && github.event_name == 'push' + run: | + docker push burnysc2/${{ env.IMAGENAME }}:latest + + deploy_backend_prod: + if: github.ref == 'refs/heads/develop' + needs: [build_and_deploy_docker_image] + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + env: + USERNAME: discordbot + + steps: + - name: Update docker image on server and restart server + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + port: 22 + username: ${{ env.USERNAME }} + key: ${{ secrets.DISCORDBOTKEY }} + passphrase: '' + script: | + sudo /bin/systemctl disable --now ${{ env.USERNAME }} + sudo systemctl daemon-reload + docker pull burnysc2/${{ env.IMAGENAME }}:latest + sudo /bin/systemctl enable --now ${{ env.USERNAME }} diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 1077fad0..1673df8a 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -14,6 +14,7 @@ on: env: SUBDIRECTORY: fastapi_server + IMAGENAME: fastapi_server VERSION_NUMBER: 1.0.0 jobs: @@ -68,11 +69,11 @@ jobs: - uses: actions/checkout@v2 - name: Build docker image - working-directory: fastapi_server + working-directory: ${{ env.SUBDIRECTORY }} run: | - docker build -t burnysc2/fastapi_server:latest . - docker build -t burnysc2/fastapi_server:latest_dev . - docker build -t burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} . + docker build -t burnysc2/${{ env.IMAGENAME }}:latest . + docker build -t burnysc2/${{ env.IMAGENAME }}:latest_dev . + docker build -t burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} . - name: Login to DockerHub uses: docker/login-action@v2 @@ -80,16 +81,16 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Upload docker image + - name: Upload docker image (develop) if: github.ref == 'refs/heads/develop' && github.event_name == 'push' run: | - docker push burnysc2/fastapi_server:latest_dev - docker push burnysc2/fastapi_server:${{ env.VERSION_NUMBER}} + docker push burnysc2/${{ env.IMAGENAME }}:latest_dev + docker push burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} - - name: Upload docker image + - name: Upload docker image (master) if: github.ref == 'refs/heads/master' && github.event_name == 'push' run: | - docker push burnysc2/fastapi_server:latest + docker push burnysc2/${{ env.IMAGENAME }}:latest deploy_backend_dev: if: github.ref == 'refs/heads/develop' @@ -113,7 +114,7 @@ jobs: script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} sudo systemctl daemon-reload - docker pull burnysc2/fastapi_server:latest_dev + docker pull burnysc2/${{ env.IMAGENAME }}:latest_dev sudo /bin/systemctl enable --now ${{ env.USERNAME }} deploy_backend_prod: @@ -138,7 +139,7 @@ jobs: script: | sudo /bin/systemctl disable --now ${{ env.USERNAME }} sudo systemctl daemon-reload - docker pull burnysc2/fastapi_server:latest + docker pull burnysc2/${{ env.IMAGENAME }}:latest sudo /bin/systemctl enable --now ${{ env.USERNAME }} # - name: Update server files diff --git a/.gitignore b/.gitignore index 4e8f9dcd..ee9ca640 100644 --- a/.gitignore +++ b/.gitignore @@ -131,3 +131,7 @@ todos.db # Fastapi files fastapi_server/data + +# Discord bot files +/discord_bot/DISCORDKEY +/discord_bot/data/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d2fe5f8b..2983c947 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -185,7 +185,7 @@ repos: name: pytest_python_examples stages: [commit] language: system - entry: poetry run pytest python_examples + entry: bash -c "cd python_examples && poetry run pytest" pass_filenames: false # Run fastapi server tests @@ -193,7 +193,15 @@ repos: name: pytest_fastapi_server stages: [commit] language: system - entry: poetry run pytest fastapi_server + entry: bash -c "cd fastapi_server && poetry run pytest" + pass_filenames: false + + # Run discord bot tests + - id: pytest_discord_bot + name: pytest_discord_bot + stages: [commit] + language: system + entry: bash -c "cd discord_bot && poetry run pytest" pass_filenames: false # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) diff --git a/discord_bot/Dockerfile b/discord_bot/Dockerfile new file mode 100644 index 00000000..da8c77dd --- /dev/null +++ b/discord_bot/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.10-slim + +WORKDIR /root/discord_bot + +ADD poetry.lock pyproject.toml ./ + +RUN pip install poetry --no-cache-dir \ + && poetry config virtualenvs.create false \ + && poetry install --no-dev + +ADD . /root/discord_bot + +CMD ["poetry", "run", "python", "main.py"] + +# See run.sh diff --git a/discord_bot/commands/__init__.py b/discord_bot/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/discord_bot/commands/public_mmr.py b/discord_bot/commands/public_mmr.py new file mode 100644 index 00000000..6bff5b34 --- /dev/null +++ b/discord_bot/commands/public_mmr.py @@ -0,0 +1,92 @@ +from dataclasses import dataclass + +# https://discordpy.readthedocs.io/en/latest/api.html +from typing import List, Optional + +import aiohttp +from hikari.guilds import Member + +# http://zetcode.com/python/prettytable/ +from prettytable import PrettyTable # pip install PTable + + +@dataclass() +class Sc2LadderResult: + realm: int + # One of US, EU, KR + region: str + # One of Master GrandMaster etc + rank: str + username: str + # Battle tag with #number + bnet_id: str + # One of Zerg Terran Protoss Random + race: str + mmr: int + wins: int + losses: int + # Clantag or None if not given + clan: Optional[str] + profile_id: int + alias: Optional[str] + + @property + def short_race(self) -> str: + return self.race[0] + + @property + def short_league(self): + league_dict = { + 'grandmaster': 'GM', + 'master': 'M', + 'diamond': 'D', + 'platinum': 'P', + 'gold': 'G', + 'silver': 'S', + 'bronze': 'B', + } + return league_dict[self.rank.lower()] + + def format_result(self) -> List[str]: + return [ + f'{self.region} {self.short_race} {self.short_league}', + f'{self.mmr}', + f'{self.wins}-{self.losses}', + f'{self.username[:18]}', + f"{self.alias[:18] if self.alias else ''}", + ] + + +async def public_mmr(_author: Member, query_name: str): + """The public command '!mmr name', will look up an account name, clan name or stream name and list several results as a markdown table using PrettyTable + Usage: + !mmr twitch.tv/rotterdam08 + !mmr rotterdam + !mmr [zelos]""" + # Correct usage + assert query_name + async with aiohttp.ClientSession() as session: + # It might fit 15 results in discord + url = f'https://www.sc2ladder.com/api/player?query={query_name}&results=15' + async with session.get(url) as response: + if response.status != 200: + return f'Error: Status code `{response.status}` for query `{query_name}`' + try: + results = await response.json() + except aiohttp.ContentTypeError: + # Error with aiohttp with decoding + return f'Error while trying to decode JSON with input: `{query_name}`' + + if not results: + # No player found + return f'No player found with name `{query_name}`' + # Server, Race, League, MMR, Win/Loss, Name, Last Played, Last Streamed + fields = ['S-R-L', 'MMR', 'W/L', 'Username', 'Alias'] + pretty_table = PrettyTable(field_names=fields) + pretty_table.border = False + for api_result in results: + result_object = Sc2LadderResult(**api_result) + formated_result = result_object.format_result() + pretty_table.add_row(formated_result) + query_link = f'' + return f'{query_link}\n```md\n{len(results)} results for {query_name}:\n{pretty_table}```' diff --git a/discord_bot/commands/public_remind.py b/discord_bot/commands/public_remind.py new file mode 100644 index 00000000..0c37bd02 --- /dev/null +++ b/discord_bot/commands/public_remind.py @@ -0,0 +1,451 @@ +# https://discordpy.readthedocs.io/en/latest/api.html +import asyncio +import json +import re +import sys +from heapq import heapify, heappop, heappush +from pathlib import Path +from typing import Dict, List, Optional, Tuple, Union + +import arrow +import hikari +from hikari import Embed, GuildMessageCreateEvent, Message, PartialChannel, User +from loguru import logger + + +class Reminder: + + def __init__( + self, + reminder_utc_timestamp: float = 0, + user_id: int = 0, + user_name: str = '', + guild_id: int = 0, + channel_id: int = 0, + message: str = '', + message_id: int = 0, + ): + self.reminder_utc_timestamp: float = reminder_utc_timestamp + self.guild_id: int = guild_id + self.channel_id: int = channel_id + self.user_id: int = user_id + self.user_name: str = user_name + self.message: str = message + self.message_id: int = message_id + + def __lt__(self, other: 'Reminder'): + return self.reminder_utc_timestamp < other.reminder_utc_timestamp + + @staticmethod + def from_dict(dictionary) -> 'Reminder': + r: Reminder = Reminder() + r.__dict__.update(dictionary) + return r + + def to_dict(self) -> Dict[str, Union[float, str]]: + return { + 'reminder_utc_timestamp': self.reminder_utc_timestamp, + 'guild_id': self.guild_id, + 'channel_id': self.channel_id, + 'user_id': self.user_id, + 'user_name': self.user_name, + 'message': self.message, + 'message_id': self.message_id, + } + + def __repr__(self) -> str: + return f'Reminder({self.reminder_utc_timestamp} {self.guild_id} {self.channel_id} {self.user_id} {self.user_name} {self.message})' + + +class Remind: + REMINDER_ERROR_EMBED = Embed( + title='Usage of reminder command', + description=""" +Example usage: +!reminder 5d 3h 2m 1s remind me of this +!reminder 1day 1hour 1min 1second remind me of this +!reminder 5days 3hours 2mins 420seconds remind me of this + """ + ) + + def __init__(self, client: hikari.GatewayBot): + super().__init__() + self.client: hikari.GatewayBot = client + self.reminders: List[Tuple[float, Reminder]] = [] + self.reminder_file_path: Path = Path(__file__).parent.parent / 'data' / 'reminders.json' + # Limit of reminders per person + self.reminder_limit = 10 + + async def load_reminders(self): + if self.reminder_file_path.is_file(): + with open(self.reminder_file_path) as f: + reminders = json.load(f) + # Append them in order in the minheap + self.reminders = [] + for reminder in reminders: + r: Reminder = Reminder.from_dict(reminder) + heappush(self.reminders, (r.reminder_utc_timestamp, r)) + else: + self.reminders = [] + await self.save_reminders() + + async def save_reminders(self): + with open(self.reminder_file_path, 'w') as f: + reminders_serialized = [reminder[1].to_dict() for reminder in self.reminders] + json.dump(reminders_serialized, f, indent=2) + + async def tick(self): + """ Function gets called every second. """ + need_to_save_reminders = False + reminded: bool = True + while self.reminders and reminded: + reminded = False + # First element, but is stored as tuple + reminder: Reminder = self.reminders[0][1] + reminder_time: arrow.Arrow = arrow.Arrow.utcfromtimestamp(reminder.reminder_utc_timestamp) + time_now: arrow.Arrow = arrow.utcnow() + if reminder_time < time_now: + reminder = heappop(self.reminders)[1] + need_to_save_reminders = True + reminded = True + person: User = await self._get_user_by_id(reminder.user_id) + logger.info(f'Attempting to remind {person.username} of: {reminder.message}') + try: + # The original !reminder message may have been deleted + message: Message = await self._get_message_by_id(reminder.channel_id, reminder.message_id) + link: str = message.make_link(message.guild_id) + '\n' + except hikari.NotFoundError: + link = '' + await person.send(f'{link}You wanted to be reminded of: {reminder.message}') + + # Save reminder to file because we did remind a person now + if need_to_save_reminders: + await self.save_reminders() + + async def _add_reminder(self, reminder: Reminder): + heappush(self.reminders, (reminder.reminder_utc_timestamp, reminder)) + await self.save_reminders() + + async def _get_user_by_id(self, user_id: int) -> User: + return await self.client.rest.fetch_user(user_id) + + async def _get_channel_by_id(self, channel_id: int) -> PartialChannel: + return await self.client.rest.fetch_channel(channel_id) + + async def _get_message_by_id(self, channel_id: int, message_id: int) -> Message: + return await self.client.rest.fetch_message(channel_id, message_id) + + async def _get_all_reminders_by_user_id(self, user_id: int) -> List[Reminder]: + user_reminders: List[Reminder] = [] + reminders_copy = self.reminders.copy() + while reminders_copy: + r: Reminder = heappop(reminders_copy)[1] + if user_id == r.user_id: + user_reminders.append(r) + return user_reminders + + async def _user_reached_max_reminder_threshold(self, user_id: int) -> bool: + user_reminders = await self._get_all_reminders_by_user_id(user_id) + return len(user_reminders) >= self.reminder_limit + + async def _parse_date_and_time_from_message(self, message: str) -> Optional[Tuple[arrow.Arrow, str]]: + time_now: arrow.Arrow = arrow.utcnow() + + # Old pattern which was working: + # date_pattern = "(?:([0-9]{4})?-?([0-9]{1,2})-([0-9]{1,2}))?" + # time_pattern = r"(?:(\d{1,2}):(\d{1,2}):?(\d{1,2})?)?" + date_pattern = r'(?:(?:(\d{4})-)?(\d{1,2})-(\d{1,2}))?' + time_pattern = r'(?:(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?' + text_pattern = '((?:.|\n)+)' + space_pattern = ' ?' + regex_pattern = f'{date_pattern}{space_pattern}{time_pattern}{space_pattern} {text_pattern}' + + result = re.fullmatch(regex_pattern, message) + + # Pattern does not match + if result is None: + return None + + results = [(message[x[0]:x[1]] if x != (-1, -1) else '') for x in result.regs] + _ = results.pop(0) + year, month, day, hour, minute, second, reminder_message = results + + # Message is empty or just a new line character + if not reminder_message.strip(): + return None + + # Could not retrieve a combination of month+day or hour+minute from the message + if not all([month, day]) and not all([hour, minute]): + return None + + # Set year to current year if it was not set in the message string + year = year if year else str(time_now.year) + # Set current month and day if the input was only HH:mm:ss + month = month if month else str(time_now.month) + day = day if day else str(time_now.day) + + # Fill empty strings with 1 zero + hour, minute, second = [v.zfill(2) for v in [hour, minute, second]] + + try: + future_reminder_time = arrow.get( + f'{str(year).zfill(2)}-{str(month).zfill(2)}-{str(day).zfill(2)} {str(hour).zfill(2)}:{str(minute).zfill(2)}:{str(second).zfill(2)}', + ['YYYY-MM-DD HH:mm:ss'], + ) + except (ValueError, arrow.parser.ParserError): + # Exception: ParserError not the right format + return None + return future_reminder_time, reminder_message.strip() + + # pylint: disable=R0914 + async def _parse_time_shift_from_message(self, message: str) -> Optional[Tuple[arrow.Arrow, str]]: + time_now: arrow.Arrow = arrow.utcnow() + + days_pattern = '(?:([0-9]+) ?(?:d|day|days))?' + hours_pattern = '(?:([0-9]+) ?(?:h|hour|hours))?' + minutes_pattern = '(?:([0-9]+) ?(?:m|min|mins|minute|minutes))?' + seconds_pattern = '(?:([0-9]+) ?(?:s|sec|secs|second|seconds))?' + text_pattern = '((?:.|\n)+)' + space_pattern = ' ?' + regex_pattern = f'{days_pattern}{space_pattern}{hours_pattern}{space_pattern}{minutes_pattern}{space_pattern}{seconds_pattern} {text_pattern}' + + result = re.fullmatch(regex_pattern, message) + + # Pattern does not match + if result is None: + return None + + results = [(message[x[0]:x[1]] if x != (-1, -1) else '') for x in result.regs] + _ = results.pop(0) + day, hour, minute, second, reminder_message = results + + # Message is empty or just a new line character + if not reminder_message.strip(): + return None + + # At least one value must be given + valid_usage: bool = bool((day or hour or minute or second) and reminder_message) + if not valid_usage: + return None + + # Fill empty strings with 1 zero + days_, hours_, minutes_, seconds_ = [v.zfill(1) for v in [day, hour, minute, second]] + # Convert strings to int + days, hours, minutes, seconds = map(int, [days_, hours_, minutes_, seconds_]) + + # Do not do ridiculous reminders + if any(time > 1_000_000 for time in [days, hours, minutes, seconds]): + return None + + try: + future_reminder_time = time_now.shift(days=days, hours=hours, minutes=minutes, seconds=seconds) + # Days > 3_000_000 => error + except OverflowError: + return None + return future_reminder_time, reminder_message.strip() + + async def public_remind_in( + self, + event: GuildMessageCreateEvent, + reminder_message: str, + ): + """ Reminds the user in a couple days, hours or minutes with a certain message. """ + author = event.get_member() + if not author: + return + threshold_reached: bool = await self._user_reached_max_reminder_threshold(author.id) + if threshold_reached: + user_reminders = await self._get_all_reminders_by_user_id(author.id) + return f'You already have {len(user_reminders)} / {self.reminder_limit} reminders, which is higher than the limit.' + + result = await self._parse_time_shift_from_message(reminder_message) + if result is None: + return self.REMINDER_ERROR_EMBED + + future_reminder_time, reminder_message = result + + channel = event.get_channel() + guild = event.get_guild() + if not channel or not guild: + return + reminder: Reminder = Reminder( + reminder_utc_timestamp=future_reminder_time.timestamp(), + user_id=author.id, + user_name=author.display_name, + guild_id=guild.id, + channel_id=channel.id, + message=reminder_message, + message_id=event.message_id, + ) + await self._add_reminder(reminder) + # Tell the user that the reminder was added successfully + output_message: str = f'You will be reminded {future_reminder_time.humanize()} of: {reminder_message}' + return output_message + + async def public_remind_at( + self, + event: GuildMessageCreateEvent, + reminder_message: str, + ): + """ Add a reminder which reminds you at a certain time or date. """ + author = event.get_member() + if not author: + return + threshold_reached: bool = await self._user_reached_max_reminder_threshold(author.id) + if threshold_reached: + user_reminders = await self._get_all_reminders_by_user_id(author.id) + return f'You already have {len(user_reminders)} / {self.reminder_limit} reminders, which is higher than the limit.' + + time_now: arrow.Arrow = arrow.utcnow() + + error_description = """ +Example usage: +!remindat 2021-04-20 04:20:00 remind me of this +!remindat 2021-04-20 04:20 remind me of this +!remindat 04-20 04:20:00 remind me of this +!remindat 04-20 04:20 remind me of this +!remindat 2021-04-20 remind me of this +!remindat 04-20 remind me of this +!remindat 04:20:00 remind me of this +!remindat 04:20 remind me of this + """ + error_embed: Embed = Embed(title='Usage of remindat command', description=error_description) + + result = await self._parse_date_and_time_from_message(reminder_message) + if result is None: + return error_embed + future_reminder_time, reminder_message = result + + channel = event.get_channel() + guild = event.get_guild() + if not channel or not guild: + return + if time_now < future_reminder_time: + reminder: Reminder = Reminder( + reminder_utc_timestamp=future_reminder_time.timestamp(), + user_id=author.id, + user_name=author.display_name, + guild_id=guild.id, + channel_id=channel.id, + message=reminder_message, + message_id=event.message_id, + ) + await self._add_reminder(reminder) + # Tell the user that the reminder was added successfully + output_message: str = f'You will be reminded {future_reminder_time.humanize()} of: {reminder.message}' + return output_message + + # TODO Fix embed for reminders in the past + # Check if reminder is in the past, error invalid, reminder must be in the future + return Embed( + title='Usage of remindat command', description=f'Your reminder is in the past!\n{error_description}' + ) + + async def public_list_reminders(self, event: GuildMessageCreateEvent): + """ List all of the user's reminders """ + author = event.get_member() + if not author: + return + + # id, time formatted by iso standard format, in 5 minutes, text + user_reminders: List[Tuple[int, str, str, str]] = [] + + # Sorted reminders by date and time ascending + user_reminders2: List[Reminder] = await self._get_all_reminders_by_user_id(author.id) + reminder_id = 1 + while user_reminders2: + r: Reminder = user_reminders2.pop(0) + time: arrow.Arrow = arrow.Arrow.utcfromtimestamp(r.reminder_utc_timestamp) + user_reminders.append((reminder_id, str(time), time.humanize(), r.message)) + reminder_id += 1 + + if not user_reminders: + return "You don't have any reminders." + + reminders: List[str] = [ + f'{reminder_id}) {time} {humanize}: {message}' for reminder_id, time, humanize, message in user_reminders + ] + description: str = '\n'.join(reminders) + embed: Embed = Embed(title=f"{author.display_name}'s reminders", description=description) + return embed + + async def public_del_remind(self, event: GuildMessageCreateEvent, message: str): + """ Removes reminders from the user """ + try: + reminder_id_to_delete = int(message) - 1 + except ValueError: + # Error: message is not valid + # TODO Replace "!" with bot variable + error_title = 'Invalid usage of !delreminder' + embed_description = 'If you have 3 reminders, a valid command is is:\n!delreminder 2' + embed = Embed(title=error_title, description=embed_description) + return embed + + author = event.get_member() + if not author: + return + user_reminders = await self._get_all_reminders_by_user_id(author.id) + if 0 <= reminder_id_to_delete <= len(user_reminders) - 1: + reminder_to_delete: Reminder = user_reminders[reminder_id_to_delete] + # Find the reminder in the reminder list, then remove it + logger.info(f'Trying to remove reminder {reminder_to_delete}') + logger.info(f'Reminders available: {self.reminders}') + self.reminders.remove((reminder_to_delete.reminder_utc_timestamp, reminder_to_delete)) + heapify(self.reminders) + await self.save_reminders() + # Say that the reminder was successfully removed? + embed = Embed( + title=f"Removed {author.display_name}'s reminder", description=f'{reminder_to_delete.message}' + ) + return embed + + # Invalid reminder id, too high number + if len(user_reminders) == 0: + return 'Invalid reminder id, you have no reminders.' + if len(user_reminders) == 1: + return "Invalid reminder id, you only have one reminders. Only '!delreminder 1' works for you." + return f'Invalid reminder id, you only have {len(user_reminders)} reminders. Pick a number between 1 and {len(user_reminders)}.' + + +def main(): + message = '16:20 some message' + message = '04-20 16:20 some message' + # message = "01-01 00:00:00 0\n0" + # message = "01-01 00:00:00 0" + # message = "16:20" + # message = "" + r = Remind(None) + # pylint: disable=W0212 + result = asyncio.run(r._parse_date_and_time_from_message(message)) + print(result, bool(result[1])) + assert result[1] == 'some message' + sys.exit() + + class CustomAuthor: + + def __init__(self, id_: int, name: str): + self.id = id_ + self.name = name + + class CustomMessage: + + def __init__(self, content: str, author: CustomAuthor): + self.content = content + self.author = author + + author = CustomAuthor(420, 'BuRny') + + my_message = '!remindat 5m text' + a = arrow.get( + '12:30', + ['YYYY-MM-DD HH:mm:ss', 'MM-DD HH:mm:ss', 'MM-DD HH:mm', 'YYYY-MM-DD', 'MM-DD', 'HH:mm:ss', 'HH:mm'], + ) + print(a) + print(a.second) + _message: CustomMessage = CustomMessage(my_message, author=author) + _remind = Remind(client=None) + # asyncio.run(remind.public_remind_at(message)) + + +if __name__ == '__main__': + main() diff --git a/discord_bot/main.py b/discord_bot/main.py new file mode 100644 index 00000000..011648a7 --- /dev/null +++ b/discord_bot/main.py @@ -0,0 +1,206 @@ +import asyncio +import os +from pathlib import Path +from typing import AsyncIterable + +import hikari +from commands.public_remind import Remind +from hikari import Embed, GatewayGuild, GuildMessageCreateEvent +from loguru import logger + +# Load key and start bot +DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' +assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" +with DISCORDKEY_PATH.open() as f: + os.environ['DISCORDKEY'] = f.read() +bot = hikari.GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore +PREFIX = '!' + +# Start reminder plugin +my_reminder: Remind = Remind(bot) + +# Load stage +assert os.getenv('STAGE', 'DEV') in {'DEV', 'PROD'}, os.getenv('STAGE', 'DEV') +STAGE = os.getenv('STAGE', 'DEV') + +# Paths and folders of permanent data +DATA_FOLDER = Path(__file__).parent / 'data' +logger.add(DATA_FOLDER / 'bot.log') + + +async def reminder(event: GuildMessageCreateEvent, message: str): + author = event.get_member() + channel = event.get_channel() + if not author or not channel: + return + response = await my_reminder.public_remind_in(event, message) + if isinstance(response, Embed): + sent_message = await channel.send(f'@{author.display_name}', embed=response) + else: + sent_message = await channel.send(f'@{author.display_name} {response}') + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') + + +logger.add(DATA_FOLDER / 'bot.log') + + +async def remindat(event: GuildMessageCreateEvent, message: str): + author = event.get_member() + channel = event.get_channel() + if not author or not channel: + return + response = await my_reminder.public_remind_at(event, message) + if isinstance(response, Embed): + sent_message = await channel.send(f'{author.mention}', embed=response) + else: + sent_message = await channel.send(f'{author.mention} {response}') + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') + + +async def reminders(event: GuildMessageCreateEvent): + author = event.get_member() + channel = event.get_channel() + if not author or not channel: + return + response = await my_reminder.public_list_reminders(event) + if isinstance(response, Embed): + message = await channel.send(f'{author.mention}', embed=response) + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await message.add_reaction('\u274C') + elif response: + # No reminders + await channel.send(f'{author.mention} {response}') + + +async def delreminder(event: GuildMessageCreateEvent, message: str): + author = event.get_member() + channel = event.get_channel() + if not author or not channel: + return + response = await my_reminder.public_del_remind(event, message) + if isinstance(response, Embed): + sent_message = await channel.send(f'{author.mention}', embed=response) + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') + elif response: + # Error message + await channel.send(f'{author.mention} {response}') + + +async def loop_function(): + """ A function that is called every X seconds based on the asyncio.sleep(time) below. """ + while 1: + await asyncio.sleep(1) + await my_reminder.tick() + + +def is_command(cmd_name: str, content: str) -> bool: + """Check if the message sent is a valid command.""" + return content == f'{PREFIX}{cmd_name}' + + +async def get_all_servers() -> AsyncIterable[GatewayGuild]: + server: GatewayGuild + all_connected_servers = bot.cache.get_available_guilds_view() + for server in all_connected_servers.values(): + yield server + + # all_connected_servers = bot.cache.get_guilds_view() + # for server in all_connected_servers.values(): + # yield server + + # async for server in bot.rest.fetch_my_guilds(): + # yield server + + +@bot.listen() +async def on_start(_event: hikari.StartedEvent) -> None: + logger.info('Server started') + await my_reminder.load_reminders() + # Call another async function that runs forever + asyncio.create_task(loop_function()) + async for server_name in get_all_servers(): + logger.info(f'Connected to server: {server_name}') + + +# pylint: disable=R0911 +@bot.listen() +async def handle_reaction_add(event: hikari.GuildReactionAddEvent) -> None: + if event.member.is_bot: + return + + # Remove message if :x: was reacted to it + if not event.is_for_emoji('\u274C'): + return + + channel: hikari.PartialChannel = await bot.rest.fetch_channel(event.channel_id) + # Use channel 'bot_tests' only for development + if STAGE == 'DEV' and channel.name != 'bot_tests': + return + if STAGE == 'PROD' and channel.name == 'bot_tests': + return + + message = await bot.rest.fetch_message(event.channel_id, event.message_id) + if not message: + return + # Message is not by this bot + if not message.author.is_bot: + return + # Reaction is not by one of the mentioned users + if not message.content or f'<@{event.user_id}>' not in message.content: + return + await message.delete() + + +@bot.listen() +async def handle_new_message(event: hikari.GuildMessageCreateEvent) -> None: + """Listen for messages being created.""" + channel = event.get_channel() + if not channel: + return + # Use channel 'bot_tests' only for development + if STAGE == 'DEV' and channel.name != 'bot_tests': + return + if STAGE == 'PROD' and channel.name == 'bot_tests': + return + + # Do not react if messages sent by webhook or bot, or message is empty + if not event.is_human or not event.content: + return + + # guild = event.get_guild() + # member = event.get_member() + # + # # a = guild.get_emojis() + # b = await guild.fetch_emojis() + # animated = next(i for i in b if i.is_animated) + + if event.content.startswith(PREFIX): + command, *message_list = event.content.split() + command = command[len(PREFIX):] + message = ' '.join(message_list) + await handle_commands(command, message, event) + + +async def handle_commands(command: str, message: str, event: hikari.GuildMessageCreateEvent) -> None: + if command == 'reminder': + await reminder(event, message) + if command == 'remindat': + await remindat(event, message) + if command == 'reminders': + await reminders(event) + if command == 'delreminder': + await delreminder(event, message) + + if command == 'ping': + guild = event.get_guild() + if guild: + b = await guild.fetch_emojis() + animated = next(i for i in b if i.is_animated) + await event.message.respond(f'Pong! {bot.heartbeat_latency * 1_000:.0f}ms {b[0]} {animated}') + + +if __name__ == '__main__': + bot.run() diff --git a/discord_bot/poetry.lock b/discord_bot/poetry.lock new file mode 100644 index 00000000..ed17fe80 --- /dev/null +++ b/discord_bot/poetry.lock @@ -0,0 +1,778 @@ +[[package]] +name = "aiohttp" +version = "3.8.1" +description = "Async http client/server framework (asyncio)" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +aiosignal = ">=1.1.2" +async-timeout = ">=4.0.0a3,<5.0" +attrs = ">=17.3.0" +charset-normalizer = ">=2.0,<3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["aiodns", "brotli", "cchardet"] + +[[package]] +name = "aiosignal" +version = "1.2.0" +description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "arrow" +version = "1.2.2" +description = "Better dates & times for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +python-dateutil = ">=2.7.0" + +[[package]] +name = "asgiref" +version = "3.5.2" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[[package]] +name = "async-timeout" +version = "4.0.2" +description = "Timeout context manager for asyncio programs" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "colorlog" +version = "6.6.0" +description = "Add colours to the output of Python's logging module." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] + +[[package]] +name = "frozenlist" +version = "1.3.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "h11" +version = "0.13.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "hikari" +version = "2.0.0.dev108" +description = "A sane Discord API for Python 3 built on asyncio and good intentions" +category = "main" +optional = false +python-versions = ">=3.8.0,<3.11" + +[package.dependencies] +aiohttp = ">=3.8,<4.0" +attrs = ">=21.4,<22.0" +colorlog = ">=6.6,<7.0" +multidict = ">=6.0,<7.0" + +[package.extras] +server = ["pynacl (>=1.5,<2.0)"] +speedups = ["aiodns (>=3.0,<4.0)", "cchardet (>=2.1,<3.0)", "Brotli (>=1.0,<2.0)", "ciso8601 (>=2.2,<3.0)"] + +[[package]] +name = "hypothesis" +version = "6.47.0" +description = "A library for property-based testing" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +sortedcontainers = ">=2.1.0,<3.0.0" + +[package.extras] +all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] +cli = ["click (>=7.0)", "black (>=19.10b0)", "rich (>=9.0.0)"] +codemods = ["libcst (>=0.3.16)"] +dateutil = ["python-dateutil (>=1.4)"] +django = ["django (>=2.2)"] +dpcontracts = ["dpcontracts (>=0.4)"] +ghostwriter = ["black (>=19.10b0)"] +lark = ["lark-parser (>=0.6.5)"] +numpy = ["numpy (>=1.9.0)"] +pandas = ["pandas (>=0.25)"] +pytest = ["pytest (>=4.6)"] +pytz = ["pytz (>=2014.1)"] +redis = ["redis (>=3.0.0)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "loguru" +version = "0.6.0" +description = "Python logging made (stupidly) simple" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"] + +[[package]] +name = "multidict" +version = "6.0.2" +description = "multidict implementation" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "ptable" +version = "0.9.2" +description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "dev" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pytest" +version = "6.2.5" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +toml = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.15.1" +description = "Pytest support for asyncio." +category = "dev" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +pytest = ">=5.4.0" + +[package.extras] +testing = ["coverage", "hypothesis (>=5.7.1)"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "uvicorn" +version = "0.17.6" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +asgiref = ">=3.4.0" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] + +[[package]] +name = "yarl" +version = "1.7.2" +description = "Yet another URL library" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "1.1" +python-versions = ">=3.8, <3.11" +content-hash = "1e9c5352a8d0d7bdfb37867267990f626412f77443eca16b2ff7175ebbe8e91d" + +[metadata.files] +aiohttp = [ + {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8"}, + {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8"}, + {file = "aiohttp-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2"}, + {file = "aiohttp-3.8.1-cp310-cp310-win32.whl", hash = "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa"}, + {file = "aiohttp-3.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32"}, + {file = "aiohttp-3.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4"}, + {file = "aiohttp-3.8.1-cp36-cp36m-win32.whl", hash = "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602"}, + {file = "aiohttp-3.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96"}, + {file = "aiohttp-3.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c"}, + {file = "aiohttp-3.8.1-cp37-cp37m-win32.whl", hash = "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9"}, + {file = "aiohttp-3.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33"}, + {file = "aiohttp-3.8.1-cp38-cp38-win32.whl", hash = "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a"}, + {file = "aiohttp-3.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2"}, + {file = "aiohttp-3.8.1-cp39-cp39-win32.whl", hash = "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1"}, + {file = "aiohttp-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac"}, + {file = "aiohttp-3.8.1.tar.gz", hash = "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"}, +] +aiosignal = [ + {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, + {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, +] +arrow = [ + {file = "arrow-1.2.2-py3-none-any.whl", hash = "sha256:d622c46ca681b5b3e3574fcb60a04e5cc81b9625112d5fb2b44220c36c892177"}, + {file = "arrow-1.2.2.tar.gz", hash = "sha256:05caf1fd3d9a11a1135b2b6f09887421153b94558e5ef4d090b567b47173ac2b"}, +] +asgiref = [ + {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, + {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, +] +async-timeout = [ + {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, + {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +colorlog = [ + {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, + {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"}, +] +frozenlist = [ + {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, + {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, + {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"}, + {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"}, + {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"}, + {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"}, + {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"}, + {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"}, + {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"}, + {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"}, + {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"}, + {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, + {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, +] +h11 = [ + {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, + {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, +] +hikari = [ + {file = "hikari-2.0.0.dev108-py3-none-any.whl", hash = "sha256:bc78e5c753f0b87ae24e1a644a2e4d01d08d5ed35cbaca0f160da5283a589785"}, + {file = "hikari-2.0.0.dev108.tar.gz", hash = "sha256:d13cfcd0e3732185fa3048b5d9fd8b6078b5dbb0df7820ba7e3e55083bf9d4b5"}, +] +hypothesis = [ + {file = "hypothesis-6.47.0-py3-none-any.whl", hash = "sha256:76a7d16f78b5691db34ef87fa677d020dd86189f6b748adf801088743b66c889"}, + {file = "hypothesis-6.47.0.tar.gz", hash = "sha256:dd88c57f45032fc3d84596e426d8e3d67f88eda2d8a2d96a5697def036a7e0c7"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +loguru = [ + {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, + {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, +] +multidict = [ + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, + {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, + {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, + {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, + {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, + {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, + {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, + {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, + {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, + {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, + {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +ptable = [ + {file = "PTable-0.9.2.tar.gz", hash = "sha256:aa7fc151cb40f2dabcd2275ba6f7fd0ff8577a86be3365cd3fb297cbe09cc292"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pytest = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.15.1.tar.gz", hash = "sha256:2564ceb9612bbd560d19ca4b41347b54e7835c2f792c504f698e05395ed63f6f"}, + {file = "pytest_asyncio-0.15.1-py3-none-any.whl", hash = "sha256:3042bcdf1c5d978f6b74d96a151c4cfb9dcece65006198389ccd7e6c60eb1eea"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +sortedcontainers = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +uvicorn = [ + {file = "uvicorn-0.17.6-py3-none-any.whl", hash = "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6"}, + {file = "uvicorn-0.17.6.tar.gz", hash = "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23"}, +] +win32-setctime = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] +yarl = [ + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, + {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, + {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, + {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, + {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, + {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, + {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, + {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, + {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, + {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, + {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, + {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, + {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, + {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, +] diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml new file mode 100644 index 00000000..cefe2ea3 --- /dev/null +++ b/discord_bot/pyproject.toml @@ -0,0 +1,22 @@ +[tool.poetry] +name = "discord_bot" +version = "0.1.0" +description = "" +authors = ["burny "] + +[tool.poetry.dependencies] +python = ">=3.8, <3.11" +arrow = "^1.2.2" +hikari = "^2.0.0-alpha.108" +loguru = "^0.6.0" +ptable = "^0.9.2" +uvicorn = "^0.17.6" + +[tool.poetry.dev-dependencies] +hypothesis = "^6.8.5" +pytest = "^6.2.3" +pytest-asyncio = "^0.15.1" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/discord_bot/run.sh b/discord_bot/run.sh new file mode 100644 index 00000000..54f36904 --- /dev/null +++ b/discord_bot/run.sh @@ -0,0 +1,5 @@ +docker build -t discord_bot_image . +docker run --rm --name discord_bot \ + --mount type=bind,source="$(pwd)/data",destination=/root/discord_bot/data \ + --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ + discord_bot_image diff --git a/discord_bot/systemd/discordbot.service b/discord_bot/systemd/discordbot.service new file mode 100644 index 00000000..9be740dd --- /dev/null +++ b/discord_bot/systemd/discordbot.service @@ -0,0 +1,15 @@ +# /etc/systemd/system/discordbot.service +[Service] +ExecStart=/usr/bin/docker run --rm --name discord_bot --env STAGE=PROD \ + --mount type=bind,source="/home/discordbot/data",destination=/root/discord_bot/data \ + --mount type=bind,source="/home/discordbot/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ + burnysc2/discord_bot:latest +Restart=always +RestartSec=20 +SyslogIdentifier=discordbot +User=discordbot +Group=discordbot +WorkingDirectory=/home/discordbot + +[Install] +WantedBy=multi-user.target diff --git a/discord_bot/test/test_mmr.py b/discord_bot/test/test_mmr.py new file mode 100644 index 00000000..83f960e5 --- /dev/null +++ b/discord_bot/test/test_mmr.py @@ -0,0 +1,32 @@ +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +import pytest +from commands.public_mmr import Sc2LadderResult + + +@pytest.mark.asyncio +async def test_parse_api_result(): + example_response = { + 'realm': '1', + 'region': 'EU', + 'rank': 'Grandmaster', + 'username': 'ToIsengard', + 'bnet_id': 'llllllllllll#2984', + 'race': 'Protoss', + 'mmr': 6762, + 'wins': 91, + 'losses': 47, + 'clan': 'Zorr0', + 'profile_id': 6836532, + 'alias': 'Harstem', + } + + test_object = Sc2LadderResult(**example_response) + result = test_object.format_result() + + correct_result = ['EU P GM', '6762', '91-47', 'ToIsengard', 'Harstem'] + + assert result == correct_result diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py new file mode 100644 index 00000000..47c9cd30 --- /dev/null +++ b/discord_bot/test/test_remind_at.py @@ -0,0 +1,154 @@ +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +import asyncio + +import arrow +import hypothesis.strategies as st +import pytest +from commands.public_remind import Remind +from hypothesis import example, given, settings + + +def create_date_time_string(_year: int, _month: int, _day: int, _hour: int, _minute: int, _second: int) -> str: + # Mark _year=0 as year not being used + if _year: + date = f'{str(_year).zfill(4)}-{str(_month).zfill(2)}-{str(_day).zfill(2)}' + else: + date = f'2000-{str(_month).zfill(2)}-{str(_day).zfill(2)}' + + # Mark _second=0 as second not being used + if _second: + time = f'{str(_hour).zfill(2)}:{str(_minute).zfill(2)}:{str(_second).zfill(2)}' + else: + time = f'{str(_hour).zfill(2)}:{str(_minute).zfill(2)}' + + # Convert input time to date_time combination + date_time = '' + if date: + if time: + date_time = f'{date} {time}' + else: + date_time = f'{date}' + elif time: + date_time = f'{time}' + + return date_time + + +@pytest.mark.asyncio +@settings(max_examples=100) +@given( + # Year + st.integers(min_value=0, max_value=9999), + # Month + st.integers(min_value=1, max_value=12), + # Day + st.integers(min_value=1, max_value=28), + # Hour + st.integers(min_value=0, max_value=23), + # Minute + st.integers(min_value=0, max_value=59), + # Second + st.integers(min_value=0, max_value=59), + # Message + st.text(min_size=1), +) +async def test_parsing_date_and_time_from_message_success(_year, _month, _day, _hour, _minute, _second, _message): + # Dont care about empty strings, or just space or just new line characters + if not _message.strip(): + return + r = Remind(client=None) + + date_time = create_date_time_string(_year, _month, _day, _hour, _minute, _second) + my_message = f'{date_time} {_message}' + # pylint: disable=W0212 + result = await r._parse_date_and_time_from_message(my_message) + + assert isinstance(result[0], arrow.Arrow) + assert result[1] == _message.strip() + + +# pylint: disable=R0912 +@settings(max_examples=1000) +@given( + # Year + st.integers(), + # Month + st.integers(min_value=-10, max_value=15), + # Day + st.integers(min_value=-10, max_value=50), + # Hour + st.integers(min_value=-10, max_value=50), + # Minute + st.integers(min_value=-10, max_value=100), + # Second + st.integers(min_value=-10, max_value=100), + # Message + st.text(min_size=1), +) +@example(2021, 4, 20, 4, 20, 00, 'remind me of this') +def test_parsing_date_and_time_from_message_failure(_year, _month, _day, _hour, _minute, _second, _message): + if not _message.strip(): + return + r = Remind(client=None) + + date_time = create_date_time_string(_year, _month, _day, _hour, _minute, _second) + my_message = f'{date_time} {_message}' + + # Invalid date time combination, e.g. 30th of february + try: + _arrow_time = arrow.get(date_time) + except (ValueError, arrow.parser.ParserError): + return + date: str + time: str + date, time = date_time.split(' ') + + if date.count('-') == 2: + arrow.get(date, 'YYYY-MM-DD') + if date.count('-') == 1: + arrow.get(date, 'MM-DD') + if time.count(':') == 2: + arrow.get(time, 'HH:mm:ss') + if time.count(':') == 1: + arrow.get(time, 'HH:mm') + + # pylint: disable=W0212 + result = asyncio.run(r._parse_date_and_time_from_message(my_message)) + + if not date_time: + assert result is None + + # Invalid year + if not 0 <= _year < 10_000: + assert result is None + # Invalid month + if not 0 < _month <= 12: + assert result is None + # Invalid day + if not 0 < _day <= 31: + assert result is None + + # Invalid hour + if not 0 <= _hour < 24: + assert result is None + # Invalid minute + if not 0 <= _minute < 60: + assert result is None + # Invalid second + if not 0 <= _second < 60: + assert result is None + """ + TODO Write tests for all examples + !remindat 2021-04-20 04:20:00 remind me of this + !remindat 2021-04-20 04:20 remind me of this + !remindat 04-20 04:20:00 remind me of this + !remindat 04-20 04:20 remind me of this + !remindat 2021-04-20 remind me of this + !remindat 04-20 remind me of this + !remindat 04:20:00 remind me of this + !remindat 04:20 remind me of this + """ diff --git a/discord_bot/test/test_remind_in.py b/discord_bot/test/test_remind_in.py new file mode 100644 index 00000000..b3d47190 --- /dev/null +++ b/discord_bot/test/test_remind_in.py @@ -0,0 +1,117 @@ +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +import random + +import arrow +import hypothesis.strategies as st +import pytest +from commands.public_remind import Remind +from hypothesis import example, given, settings + + +def create_time_shift_string(_day, _hour, _minute, _second): + days = 'd day days'.split(' ') + hours = 'h hour hours'.split(' ') + minutes = 'm min mins minute minutes'.split(' ') + seconds = 's sec secs second seconds'.split(' ') + space = ['', ' '] + + shift_list = [] + for time, time_strings in zip([_day, _hour, _minute, _second], [days, hours, minutes, seconds]): + if time >= 0: + # Random use of "6 days" or "6days" + space_characer = random.choice(space) + time_string = random.choice(time_strings) + shift_list.append(f'{time}{space_characer}{time_string}') + # Sometimes insert a space character after "6days" + if random.choice(space): + shift_list.append(' ') + + shift = ''.join(shift_list) + return shift.strip() + + +@pytest.mark.asyncio +@settings(max_examples=100) +@example(_day=1_000_000, _hour=0, _minute=0, _second=0, _message='a') +@example(_day=0, _hour=1_000_000, _minute=0, _second=0, _message='a') +@example(_day=0, _hour=0, _minute=1_000_000, _second=0, _message='a') +@example(_day=0, _hour=0, _minute=0, _second=1_000_000, _message='a') +@given( + # Day + st.integers(min_value=0, max_value=1_000_000), + # Hour + st.integers(min_value=0, max_value=1_000_000), + # Minute + st.integers(min_value=0, max_value=1_000_000), + # Second + st.integers(min_value=0, max_value=1_000_000), + # Message + st.text(min_size=1), +) +async def test_parsing_date_and_time_from_message_success(_day, _hour, _minute, _second, _message): + # Dont care about empty strings, or just space or just new line characters + if not _message.strip(): + return + # Dont care about [0, 0, 0, 0] + if not (_day or _hour or _minute or _second): + return + + r = Remind(client=None) + + time_shift = create_time_shift_string(_day, _hour, _minute, _second) + my_message = f'{time_shift} {_message}' + # pylint: disable=W0212 + result = await r._parse_time_shift_from_message(my_message) + + assert isinstance(result[0], arrow.Arrow) + assert result[1] == _message.strip() + + +@pytest.mark.asyncio +@settings(max_examples=100) +@example(_day=10_000_000, _hour=0, _minute=0, _second=0, _message='a') +@example(_day=0, _hour=10_000_000, _minute=0, _second=0, _message='a') +@example(_day=0, _hour=0, _minute=10_000_000, _second=0, _message='a') +@example(_day=0, _hour=0, _minute=0, _second=10_000_000, _message='a') +@given( + # Day + st.integers(min_value=0), + # Hour + st.integers(min_value=0), + # Minute + st.integers(min_value=0), + # Second + st.integers(min_value=0), + # Message + st.text(min_size=1), +) +async def test_parsing_date_and_time_from_message_failure(_day, _hour, _minute, _second, _message): + r = Remind(client=None) + + time_shift = create_time_shift_string(_day, _hour, _minute, _second) + my_message = f'{time_shift} {_message}' + + # pylint: disable=W0212 + result = await r._parse_time_shift_from_message(my_message) + + # Dont care about empty strings, or just space or just new line characters + if not _message.strip(): + assert result is None + return + + # Invalid day + if not 0 <= _day <= 1_000_000: + assert result is None + # Invalid hour + if not 0 <= _hour <= 1_000_000: + assert result is None + # Invalid minute + if not 0 <= _minute <= 1_000_000: + assert result is None + # Invalid second + if not 0 <= _second <= 1_000_000: + assert result is None diff --git a/fastapi_server/Dockerfile b/fastapi_server/Dockerfile index e9541c28..b2b63b7e 100644 --- a/fastapi_server/Dockerfile +++ b/fastapi_server/Dockerfile @@ -10,8 +10,6 @@ RUN pip install poetry --no-cache-dir \ ADD . /root/fastapi_server/fastapi_server -WORKDIR /root/fastapi_server - CMD ["poetry", "run", "uvicorn", "fastapi_server.main:app", "--host", "0.0.0.0", "--port", "8000"] # docker build -t burnysc2/fastapi_server:latest . diff --git a/fastapi_server/systemd/fastapiserver_dev.service b/fastapi_server/systemd/fastapiserver_dev.service index 9285c7a5..2505d57a 100644 --- a/fastapi_server/systemd/fastapiserver_dev.service +++ b/fastapi_server/systemd/fastapiserver_dev.service @@ -1,6 +1,6 @@ # /etc/systemd/system/fastapiserverdev.service [Service] -ExecStart=/usr/bin/docker run --rm --name fastapi_server_dev --publish 8000:8001 --env STAGE=DEV --mount type=bind,source="/home/fastapiserverdev/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest_dev +ExecStart=/usr/bin/docker run --rm --name fastapi_server_dev --publish 8001:8000 --env STAGE=DEV --mount type=bind,source="/home/fastapiserverdev/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest_dev Restart=always RestartSec=20 SyslogIdentifier=fastapiserverdev From ce812865aacd6929e42ad0ff04852f3f4b41741b Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 11 Jun 2022 13:09:37 +0200 Subject: [PATCH 097/391] Fix docker push image --- .github/workflows/test_discord_bot.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_discord_bot.yml b/.github/workflows/test_discord_bot.yml index beec7838..6584b019 100644 --- a/.github/workflows/test_discord_bot.yml +++ b/.github/workflows/test_discord_bot.yml @@ -79,16 +79,11 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Upload docker image (develop) + - name: Upload docker image if: github.ref == 'refs/heads/develop' && github.event_name == 'push' - run: | - docker push burnysc2/${{ env.IMAGENAME }}:latest_dev - docker push burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} - - - name: Upload docker image (master) - if: github.ref == 'refs/heads/master' && github.event_name == 'push' run: | docker push burnysc2/${{ env.IMAGENAME }}:latest + docker push burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} deploy_backend_prod: if: github.ref == 'refs/heads/develop' From f9aa997b6f43211116fecfba7636c7b8b6d0c16d Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 11 Jun 2022 13:18:15 +0200 Subject: [PATCH 098/391] Strip token --- discord_bot/main.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/discord_bot/main.py b/discord_bot/main.py index 011648a7..38f95661 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -12,7 +12,9 @@ DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" with DISCORDKEY_PATH.open() as f: - os.environ['DISCORDKEY'] = f.read() + token = f.read() + os.environ['DISCORDKEY'] = token.strip() + del token bot = hikari.GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore PREFIX = '!' From 933f928c95a604c5903c6f58ccc7391f771ff6b3 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 11 Jun 2022 13:27:45 +0200 Subject: [PATCH 099/391] Always add remove emoji to messages --- discord_bot/main.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/discord_bot/main.py b/discord_bot/main.py index 38f95661..ade8a7fd 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -37,16 +37,14 @@ async def reminder(event: GuildMessageCreateEvent, message: str): return response = await my_reminder.public_remind_in(event, message) if isinstance(response, Embed): - sent_message = await channel.send(f'@{author.display_name}', embed=response) + # Error with embed + sent_message = await channel.send(f'{author.mention}', embed=response) else: - sent_message = await channel.send(f'@{author.display_name} {response}') + sent_message = await channel.send(f'{author.mention} {response}') # https://www.fileformat.info/info/unicode/char/274c/index.htm await sent_message.add_reaction('\u274C') -logger.add(DATA_FOLDER / 'bot.log') - - async def remindat(event: GuildMessageCreateEvent, message: str): author = event.get_member() channel = event.get_channel() @@ -54,6 +52,7 @@ async def remindat(event: GuildMessageCreateEvent, message: str): return response = await my_reminder.public_remind_at(event, message) if isinstance(response, Embed): + # Error with embed sent_message = await channel.send(f'{author.mention}', embed=response) else: sent_message = await channel.send(f'{author.mention} {response}') @@ -68,12 +67,12 @@ async def reminders(event: GuildMessageCreateEvent): return response = await my_reminder.public_list_reminders(event) if isinstance(response, Embed): - message = await channel.send(f'{author.mention}', embed=response) - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await message.add_reaction('\u274C') - elif response: + sent_message = await channel.send(f'{author.mention}', embed=response) + else: # No reminders - await channel.send(f'{author.mention} {response}') + sent_message = await channel.send(f'{author.mention} {response}') + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') async def delreminder(event: GuildMessageCreateEvent, message: str): @@ -84,11 +83,11 @@ async def delreminder(event: GuildMessageCreateEvent, message: str): response = await my_reminder.public_del_remind(event, message) if isinstance(response, Embed): sent_message = await channel.send(f'{author.mention}', embed=response) - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await sent_message.add_reaction('\u274C') - elif response: + else: # Error message - await channel.send(f'{author.mention} {response}') + sent_message = await channel.send(f'{author.mention} {response}') + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') async def loop_function(): From 902106921569a5c1856eff39c950bf7afd1c0aa7 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 12 Jun 2022 13:01:49 +0200 Subject: [PATCH 100/391] Fix mmr command, add generic function caller --- .github/workflows/python_examples.yml | 1 + discord_bot/commands/public_mmr.py | 107 ++++++++++++++++------- discord_bot/commands/public_remind.py | 51 ++++------- discord_bot/main.py | 119 +++++++++++--------------- discord_bot/test/test_mmr.py | 60 ++++++++++--- 5 files changed, 186 insertions(+), 152 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 110896c7..b907dde3 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -46,6 +46,7 @@ jobs: run: poetry config virtualenvs.in-project true - name: Set up cache + if: matrix.os != 'windows-latest' uses: actions/cache@v3 with: path: .venv diff --git a/discord_bot/commands/public_mmr.py b/discord_bot/commands/public_mmr.py index 6bff5b34..01238483 100644 --- a/discord_bot/commands/public_mmr.py +++ b/discord_bot/commands/public_mmr.py @@ -1,14 +1,15 @@ from dataclasses import dataclass - -# https://discordpy.readthedocs.io/en/latest/api.html from typing import List, Optional import aiohttp -from hikari.guilds import Member +from hikari import GuildMessageCreateEvent # http://zetcode.com/python/prettytable/ from prettytable import PrettyTable # pip install PTable +MESSAGE_CHARACTER_LIMIT = 2_000 +TABLE_ROW_LIMIT = 20 + @dataclass() class Sc2LadderResult: @@ -16,48 +17,75 @@ class Sc2LadderResult: # One of US, EU, KR region: str # One of Master GrandMaster etc - rank: str + # rank: str username: str # Battle tag with #number bnet_id: str # One of Zerg Terran Protoss Random race: str - mmr: int - wins: int - losses: int + # Last or current season mmr + mmr: str + # Current season games played + games_played: int # Clantag or None if not given - clan: Optional[str] - profile_id: int - alias: Optional[str] + clan_tag: Optional[str] + + @staticmethod + def from_api_result(data: dict) -> 'Sc2LadderResult': + + members = data['members'] + character = members['character'] + previous_stats = data['previousStats'] + current_stats = data['currentStats'] + clan = members.get('clan') + race = 'Random' + if 'protossGamesPlayed' in members: + race = 'Protoss' + if 'terranGamesPlayed' in members: + race = 'Terran' + if 'zergGamesPlayed' in members: + race = 'Zerg' + mmr = '-' + if previous_stats['rating']: + mmr = str(previous_stats['rating']) + if current_stats['rating']: + mmr = str(current_stats['rating']) + games_played = 0 + if current_stats['gamesPlayed']: + games_played = current_stats['gamesPlayed'] + clan_tag = clan['tag'] if clan else None + bnet_id = character['name'] + return Sc2LadderResult( + realm=character['realm'], + region=character['region'], + bnet_id=bnet_id, + race=race, + mmr=mmr, + games_played=games_played, + clan_tag=clan_tag, + username=bnet_id.split('#')[0], + ) @property def short_race(self) -> str: return self.race[0] @property - def short_league(self): - league_dict = { - 'grandmaster': 'GM', - 'master': 'M', - 'diamond': 'D', - 'platinum': 'P', - 'gold': 'G', - 'silver': 'S', - 'bronze': 'B', - } - return league_dict[self.rank.lower()] + def clan_tag_string(self) -> str: + if self.clan_tag: + return f'[{self.clan_tag}] ' + return '' def format_result(self) -> List[str]: return [ - f'{self.region} {self.short_race} {self.short_league}', + f'{self.region} {self.short_race}', f'{self.mmr}', - f'{self.wins}-{self.losses}', - f'{self.username[:18]}', - f"{self.alias[:18] if self.alias else ''}", + f'{self.games_played}', + f'{self.clan_tag_string}{self.username[:18]}', ] -async def public_mmr(_author: Member, query_name: str): +async def public_mmr(_event: GuildMessageCreateEvent, query_name: str): """The public command '!mmr name', will look up an account name, clan name or stream name and list several results as a markdown table using PrettyTable Usage: !mmr twitch.tv/rotterdam08 @@ -67,7 +95,7 @@ async def public_mmr(_author: Member, query_name: str): assert query_name async with aiohttp.ClientSession() as session: # It might fit 15 results in discord - url = f'https://www.sc2ladder.com/api/player?query={query_name}&results=15' + url = f'https://www.nephest.com/sc2/api/characters?name={query_name}' async with session.get(url) as response: if response.status != 200: return f'Error: Status code `{response.status}` for query `{query_name}`' @@ -81,12 +109,25 @@ async def public_mmr(_author: Member, query_name: str): # No player found return f'No player found with name `{query_name}`' # Server, Race, League, MMR, Win/Loss, Name, Last Played, Last Streamed - fields = ['S-R-L', 'MMR', 'W/L', 'Username', 'Alias'] + fields = ['S-R', 'MMR', 'Games', 'Name'] + parsed_results: List[Sc2LadderResult] = [] + for api_result in results: + result_object: Sc2LadderResult = Sc2LadderResult.from_api_result(api_result) + parsed_results.append(result_object) + parsed_results.sort(key=lambda result: result.mmr, reverse=True) + pretty_table = PrettyTable(field_names=fields) pretty_table.border = False - for api_result in results: - result_object = Sc2LadderResult(**api_result) - formated_result = result_object.format_result() - pretty_table.add_row(formated_result) - query_link = f'' + for count, parsed_result in enumerate(parsed_results): + copy: PrettyTable = pretty_table.copy() + copy.add_row(parsed_result.format_result()) + # If message limit reached, stop adding results + if len(str(copy)) > MESSAGE_CHARACTER_LIMIT - 100: + break + # If table row limit is reached, stop adding results + if count >= TABLE_ROW_LIMIT: + break + pretty_table.add_row(parsed_result.format_result()) + + query_link = f'' return f'{query_link}\n```md\n{len(results)} results for {query_name}:\n{pretty_table}```' diff --git a/discord_bot/commands/public_remind.py b/discord_bot/commands/public_remind.py index 0c37bd02..4c69c9fe 100644 --- a/discord_bot/commands/public_remind.py +++ b/discord_bot/commands/public_remind.py @@ -1,4 +1,3 @@ -# https://discordpy.readthedocs.io/en/latest/api.html import asyncio import json import re @@ -8,8 +7,7 @@ from typing import Dict, List, Optional, Tuple, Union import arrow -import hikari -from hikari import Embed, GuildMessageCreateEvent, Message, PartialChannel, User +from hikari import Embed, GatewayBot, GuildMessageCreateEvent, Message, NotFoundError, PartialChannel, User from loguru import logger @@ -68,9 +66,9 @@ class Remind: """ ) - def __init__(self, client: hikari.GatewayBot): + def __init__(self, client: GatewayBot): super().__init__() - self.client: hikari.GatewayBot = client + self.client: GatewayBot = client self.reminders: List[Tuple[float, Reminder]] = [] self.reminder_file_path: Path = Path(__file__).parent.parent / 'data' / 'reminders.json' # Limit of reminders per person @@ -114,7 +112,7 @@ async def tick(self): # The original !reminder message may have been deleted message: Message = await self._get_message_by_id(reminder.channel_id, reminder.message_id) link: str = message.make_link(message.guild_id) + '\n' - except hikari.NotFoundError: + except NotFoundError: link = '' await person.send(f'{link}You wanted to be reminded of: {reminder.message}') @@ -152,8 +150,6 @@ async def _parse_date_and_time_from_message(self, message: str) -> Optional[Tupl time_now: arrow.Arrow = arrow.utcnow() # Old pattern which was working: - # date_pattern = "(?:([0-9]{4})?-?([0-9]{1,2})-([0-9]{1,2}))?" - # time_pattern = r"(?:(\d{1,2}):(\d{1,2}):?(\d{1,2})?)?" date_pattern = r'(?:(?:(\d{4})-)?(\d{1,2})-(\d{1,2}))?' time_pattern = r'(?:(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?' text_pattern = '((?:.|\n)+)' @@ -250,12 +246,9 @@ async def public_remind_in( reminder_message: str, ): """ Reminds the user in a couple days, hours or minutes with a certain message. """ - author = event.get_member() - if not author: - return - threshold_reached: bool = await self._user_reached_max_reminder_threshold(author.id) + threshold_reached: bool = await self._user_reached_max_reminder_threshold(event.author_id) if threshold_reached: - user_reminders = await self._get_all_reminders_by_user_id(author.id) + user_reminders = await self._get_all_reminders_by_user_id(event.author_id) return f'You already have {len(user_reminders)} / {self.reminder_limit} reminders, which is higher than the limit.' result = await self._parse_time_shift_from_message(reminder_message) @@ -270,8 +263,8 @@ async def public_remind_in( return reminder: Reminder = Reminder( reminder_utc_timestamp=future_reminder_time.timestamp(), - user_id=author.id, - user_name=author.display_name, + user_id=event.author_id, + user_name=event.author.username, guild_id=guild.id, channel_id=channel.id, message=reminder_message, @@ -288,12 +281,9 @@ async def public_remind_at( reminder_message: str, ): """ Add a reminder which reminds you at a certain time or date. """ - author = event.get_member() - if not author: - return - threshold_reached: bool = await self._user_reached_max_reminder_threshold(author.id) + threshold_reached: bool = await self._user_reached_max_reminder_threshold(event.author_id) if threshold_reached: - user_reminders = await self._get_all_reminders_by_user_id(author.id) + user_reminders = await self._get_all_reminders_by_user_id(event.author_id) return f'You already have {len(user_reminders)} / {self.reminder_limit} reminders, which is higher than the limit.' time_now: arrow.Arrow = arrow.utcnow() @@ -323,8 +313,8 @@ async def public_remind_at( if time_now < future_reminder_time: reminder: Reminder = Reminder( reminder_utc_timestamp=future_reminder_time.timestamp(), - user_id=author.id, - user_name=author.display_name, + user_id=event.author_id, + user_name=event.author.username, guild_id=guild.id, channel_id=channel.id, message=reminder_message, @@ -341,17 +331,13 @@ async def public_remind_at( title='Usage of remindat command', description=f'Your reminder is in the past!\n{error_description}' ) - async def public_list_reminders(self, event: GuildMessageCreateEvent): + async def public_list_reminders(self, event: GuildMessageCreateEvent, _message: str): """ List all of the user's reminders """ - author = event.get_member() - if not author: - return - # id, time formatted by iso standard format, in 5 minutes, text user_reminders: List[Tuple[int, str, str, str]] = [] # Sorted reminders by date and time ascending - user_reminders2: List[Reminder] = await self._get_all_reminders_by_user_id(author.id) + user_reminders2: List[Reminder] = await self._get_all_reminders_by_user_id(event.author_id) reminder_id = 1 while user_reminders2: r: Reminder = user_reminders2.pop(0) @@ -366,7 +352,7 @@ async def public_list_reminders(self, event: GuildMessageCreateEvent): f'{reminder_id}) {time} {humanize}: {message}' for reminder_id, time, humanize, message in user_reminders ] description: str = '\n'.join(reminders) - embed: Embed = Embed(title=f"{author.display_name}'s reminders", description=description) + embed: Embed = Embed(title=f"{event.author.username}'s reminders", description=description) return embed async def public_del_remind(self, event: GuildMessageCreateEvent, message: str): @@ -381,10 +367,7 @@ async def public_del_remind(self, event: GuildMessageCreateEvent, message: str): embed = Embed(title=error_title, description=embed_description) return embed - author = event.get_member() - if not author: - return - user_reminders = await self._get_all_reminders_by_user_id(author.id) + user_reminders = await self._get_all_reminders_by_user_id(event.author_id) if 0 <= reminder_id_to_delete <= len(user_reminders) - 1: reminder_to_delete: Reminder = user_reminders[reminder_id_to_delete] # Find the reminder in the reminder list, then remove it @@ -395,7 +378,7 @@ async def public_del_remind(self, event: GuildMessageCreateEvent, message: str): await self.save_reminders() # Say that the reminder was successfully removed? embed = Embed( - title=f"Removed {author.display_name}'s reminder", description=f'{reminder_to_delete.message}' + title=f"Removed {event.author.username}'s reminder", description=f'{reminder_to_delete.message}' ) return embed diff --git a/discord_bot/main.py b/discord_bot/main.py index ade8a7fd..6b023b72 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -1,13 +1,22 @@ import asyncio import os from pathlib import Path -from typing import AsyncIterable +from typing import AsyncIterable, Awaitable, Callable -import hikari from commands.public_remind import Remind -from hikari import Embed, GatewayGuild, GuildMessageCreateEvent +from hikari import ( + Embed, + GatewayBot, + GatewayGuild, + GuildMessageCreateEvent, + GuildReactionAddEvent, + PartialChannel, + StartedEvent, +) from loguru import logger +from discord_bot.commands.public_mmr import public_mmr + # Load key and start bot DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" @@ -15,7 +24,7 @@ token = f.read() os.environ['DISCORDKEY'] = token.strip() del token -bot = hikari.GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore +bot = GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore PREFIX = '!' # Start reminder plugin @@ -30,67 +39,28 @@ logger.add(DATA_FOLDER / 'bot.log') -async def reminder(event: GuildMessageCreateEvent, message: str): - author = event.get_member() - channel = event.get_channel() - if not author or not channel: - return - response = await my_reminder.public_remind_in(event, message) - if isinstance(response, Embed): - # Error with embed - sent_message = await channel.send(f'{author.mention}', embed=response) - else: - sent_message = await channel.send(f'{author.mention} {response}') - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await sent_message.add_reaction('\u274C') - - -async def remindat(event: GuildMessageCreateEvent, message: str): - author = event.get_member() - channel = event.get_channel() - if not author or not channel: - return - response = await my_reminder.public_remind_at(event, message) - if isinstance(response, Embed): - # Error with embed - sent_message = await channel.send(f'{author.mention}', embed=response) - else: - sent_message = await channel.send(f'{author.mention} {response}') - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await sent_message.add_reaction('\u274C') - - -async def reminders(event: GuildMessageCreateEvent): - author = event.get_member() - channel = event.get_channel() - if not author or not channel: - return - response = await my_reminder.public_list_reminders(event) - if isinstance(response, Embed): - sent_message = await channel.send(f'{author.mention}', embed=response) - else: - # No reminders - sent_message = await channel.send(f'{author.mention} {response}') - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await sent_message.add_reaction('\u274C') - - -async def delreminder(event: GuildMessageCreateEvent, message: str): - author = event.get_member() +async def generic_command_caller( + event: GuildMessageCreateEvent, + function_to_call: Callable[[GuildMessageCreateEvent, str], Awaitable], + message: str, + add_remove_emoji: bool = False, +) -> None: channel = event.get_channel() - if not author or not channel: + if not channel: return - response = await my_reminder.public_del_remind(event, message) + # Call the given function with the event and message + response = await function_to_call(event, message) if isinstance(response, Embed): - sent_message = await channel.send(f'{author.mention}', embed=response) + sent_message = await channel.send(f'{event.author.mention}', embed=response) else: # Error message - sent_message = await channel.send(f'{author.mention} {response}') - # https://www.fileformat.info/info/unicode/char/274c/index.htm - await sent_message.add_reaction('\u274C') + sent_message = await channel.send(f'{event.author.mention} {response}') + if add_remove_emoji: + # https://www.fileformat.info/info/unicode/char/274c/index.htm + await sent_message.add_reaction('\u274C') -async def loop_function(): +async def loop_function() -> None: """ A function that is called every X seconds based on the asyncio.sleep(time) below. """ while 1: await asyncio.sleep(1) @@ -117,7 +87,7 @@ async def get_all_servers() -> AsyncIterable[GatewayGuild]: @bot.listen() -async def on_start(_event: hikari.StartedEvent) -> None: +async def on_start(_event: StartedEvent) -> None: logger.info('Server started') await my_reminder.load_reminders() # Call another async function that runs forever @@ -128,7 +98,7 @@ async def on_start(_event: hikari.StartedEvent) -> None: # pylint: disable=R0911 @bot.listen() -async def handle_reaction_add(event: hikari.GuildReactionAddEvent) -> None: +async def handle_reaction_add(event: GuildReactionAddEvent) -> None: if event.member.is_bot: return @@ -136,7 +106,7 @@ async def handle_reaction_add(event: hikari.GuildReactionAddEvent) -> None: if not event.is_for_emoji('\u274C'): return - channel: hikari.PartialChannel = await bot.rest.fetch_channel(event.channel_id) + channel: PartialChannel = await bot.rest.fetch_channel(event.channel_id) # Use channel 'bot_tests' only for development if STAGE == 'DEV' and channel.name != 'bot_tests': return @@ -156,7 +126,7 @@ async def handle_reaction_add(event: hikari.GuildReactionAddEvent) -> None: @bot.listen() -async def handle_new_message(event: hikari.GuildMessageCreateEvent) -> None: +async def handle_new_message(event: GuildMessageCreateEvent) -> None: """Listen for messages being created.""" channel = event.get_channel() if not channel: @@ -185,15 +155,22 @@ async def handle_new_message(event: hikari.GuildMessageCreateEvent) -> None: await handle_commands(command, message, event) -async def handle_commands(command: str, message: str, event: hikari.GuildMessageCreateEvent) -> None: - if command == 'reminder': - await reminder(event, message) - if command == 'remindat': - await remindat(event, message) - if command == 'reminders': - await reminders(event) - if command == 'delreminder': - await delreminder(event, message) +async def handle_commands(command: str, message: str, event: GuildMessageCreateEvent) -> None: + function_mapping = { + 'reminder': my_reminder.public_remind_in, + 'remindat': my_reminder.public_remind_at, + 'reminders': my_reminder.public_list_reminders, + 'delreminder': my_reminder.public_del_remind, + 'mmr': public_mmr, + } + if command in function_mapping: + function = function_mapping[command] + await generic_command_caller( + event, + function, + message, + add_remove_emoji=True, + ) if command == 'ping': guild = event.get_guild() diff --git a/discord_bot/test/test_mmr.py b/discord_bot/test/test_mmr.py index 83f960e5..60960069 100644 --- a/discord_bot/test/test_mmr.py +++ b/discord_bot/test/test_mmr.py @@ -10,23 +10,55 @@ @pytest.mark.asyncio async def test_parse_api_result(): example_response = { - 'realm': '1', - 'region': 'EU', - 'rank': 'Grandmaster', - 'username': 'ToIsengard', - 'bnet_id': 'llllllllllll#2984', - 'race': 'Protoss', - 'mmr': 6762, - 'wins': 91, - 'losses': 47, - 'clan': 'Zorr0', - 'profile_id': 6836532, - 'alias': 'Harstem', + 'leagueMax': 6, + 'ratingMax': 6820, + 'totalGamesPlayed': 8088, + 'previousStats': { + 'rating': 6599, + 'gamesPlayed': 68, + 'rank': 1653 + }, + 'currentStats': { + 'rating': 6632, + 'gamesPlayed': 32, + 'rank': 69 + }, + 'members': { + 'protossGamesPlayed': 8088, + 'character': { + 'realm': 1, + 'name': 'Harstem#1', + 'id': 677353, + 'accountId': 677353, + 'region': 'EU', + 'battlenetId': 7100931, + 'clanId': 4535 + }, + 'account': { + 'battleTag': 'Harstem#21371', + 'id': 677353, + 'partition': 'GLOBAL', + 'hidden': None + }, + 'clan': { + 'tag': 'RBLN', + 'id': 4535, + 'region': 'EU', + 'name': 'Shopify Rebellion', + 'members': 4, + 'activeMembers': 4, + 'avgRating': 6111, + 'avgLeagueType': 5, + 'games': 852 + }, + 'proNickname': 'Harstem', + 'proTeam': 'ShopifyRebels' + } } - test_object = Sc2LadderResult(**example_response) + test_object = Sc2LadderResult.from_api_result(example_response) result = test_object.format_result() - correct_result = ['EU P GM', '6762', '91-47', 'ToIsengard', 'Harstem'] + correct_result = ['EU P', '6632', '32', '[RBLN] Harstem'] assert result == correct_result From a460649897c30d1d8c8ebc6d2bfab3996fee226b Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 12 Jun 2022 13:16:34 +0200 Subject: [PATCH 101/391] Fix import --- discord_bot/main.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/discord_bot/main.py b/discord_bot/main.py index 6b023b72..ae30344e 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -3,6 +3,7 @@ from pathlib import Path from typing import AsyncIterable, Awaitable, Callable +from commands.public_mmr import public_mmr from commands.public_remind import Remind from hikari import ( Embed, @@ -15,8 +16,6 @@ ) from loguru import logger -from discord_bot.commands.public_mmr import public_mmr - # Load key and start bot DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" From 24cb219549cb99a21e7f54e9ad83152201ebd362 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 14 Jun 2022 12:53:39 +0200 Subject: [PATCH 102/391] Add run.sh --- .pre-commit-config.yaml | 22 +- discord_bot/.dockerignore | 1 + discord_bot/main.py | 11 +- discord_bot/pyproject.toml | 1 - discord_bot/run.sh | 2 +- discord_bot/test/test_mmr.py | 8 +- discord_bot/test/test_remind_at.py | 8 +- discord_bot/test/test_remind_in.py | 8 +- fastapi_server/Dockerfile | 3 +- fastapi_server/main.py | 9 + fastapi_server/run.sh | 5 + fastapi_server/systemd/fastapiserver.service | 6 +- poetry.lock | 218 +- pyproject.toml | 6 + python_examples/main.py | 3 +- python_examples/poetry.lock | 3105 ++++++++++++++++++ python_examples/pyproject.toml | 102 + 17 files changed, 3419 insertions(+), 99 deletions(-) create mode 100644 discord_bot/.dockerignore create mode 100644 fastapi_server/run.sh create mode 100644 python_examples/poetry.lock create mode 100644 python_examples/pyproject.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2983c947..a1199f1f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -185,7 +185,7 @@ repos: name: pytest_python_examples stages: [commit] language: system - entry: bash -c "cd python_examples && poetry run pytest" + entry: poetry run python -m pytest python_examples pass_filenames: false # Run fastapi server tests @@ -193,7 +193,7 @@ repos: name: pytest_fastapi_server stages: [commit] language: system - entry: bash -c "cd fastapi_server && poetry run pytest" + entry: poetry run python -m pytest fastapi_server pass_filenames: false # Run discord bot tests @@ -201,7 +201,23 @@ repos: name: pytest_discord_bot stages: [commit] language: system - entry: bash -c "cd discord_bot && poetry run pytest" + entry: poetry run python -m pytest discord_bot + pass_filenames: false + + # Build fastapi server docker image + - id: build_docker_image_fastapi_server + name: build_docker_image_fastapi_server + stages: [commit] + language: system + entry: bash -c "cd fastapi_server && docker build -t fastapi_server_image_precommit . && docker rmi fastapi_server_image_precommit" + pass_filenames: false + + # Build discord bot docker image + - id: build_docker_image_discord_bot + name: build_docker_image_discord_bot + stages: [commit] + language: system + entry: bash -c "cd discord_bot && docker build -t discord_bot_image_precommit . && docker rmi discord_bot_image_precommit" pass_filenames: false # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) diff --git a/discord_bot/.dockerignore b/discord_bot/.dockerignore new file mode 100644 index 00000000..b926d727 --- /dev/null +++ b/discord_bot/.dockerignore @@ -0,0 +1 @@ +*test*/* diff --git a/discord_bot/main.py b/discord_bot/main.py index ae30344e..9a0d71cb 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -1,10 +1,12 @@ +import sys +from pathlib import Path + +sys.path.append(str(Path(__file__).parents[1])) + import asyncio import os -from pathlib import Path from typing import AsyncIterable, Awaitable, Callable -from commands.public_mmr import public_mmr -from commands.public_remind import Remind from hikari import ( Embed, GatewayBot, @@ -16,6 +18,9 @@ ) from loguru import logger +from discord_bot.commands.public_mmr import public_mmr +from discord_bot.commands.public_remind import Remind + # Load key and start bot DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml index cefe2ea3..81224b96 100644 --- a/discord_bot/pyproject.toml +++ b/discord_bot/pyproject.toml @@ -10,7 +10,6 @@ arrow = "^1.2.2" hikari = "^2.0.0-alpha.108" loguru = "^0.6.0" ptable = "^0.9.2" -uvicorn = "^0.17.6" [tool.poetry.dev-dependencies] hypothesis = "^6.8.5" diff --git a/discord_bot/run.sh b/discord_bot/run.sh index 54f36904..8b86dae4 100644 --- a/discord_bot/run.sh +++ b/discord_bot/run.sh @@ -1,5 +1,5 @@ docker build -t discord_bot_image . -docker run --rm --name discord_bot \ +docker run --rm --name discord_bot \ --mount type=bind,source="$(pwd)/data",destination=/root/discord_bot/data \ --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ discord_bot_image diff --git a/discord_bot/test/test_mmr.py b/discord_bot/test/test_mmr.py index 60960069..dac9935e 100644 --- a/discord_bot/test/test_mmr.py +++ b/discord_bot/test/test_mmr.py @@ -1,10 +1,6 @@ -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), '..')) - import pytest -from commands.public_mmr import Sc2LadderResult + +from discord_bot.commands.public_mmr import Sc2LadderResult @pytest.mark.asyncio diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py index 47c9cd30..412e103a 100644 --- a/discord_bot/test/test_remind_at.py +++ b/discord_bot/test/test_remind_at.py @@ -1,16 +1,12 @@ -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), '..')) - import asyncio import arrow import hypothesis.strategies as st import pytest -from commands.public_remind import Remind from hypothesis import example, given, settings +from discord_bot.commands.public_remind import Remind + def create_date_time_string(_year: int, _month: int, _day: int, _hour: int, _minute: int, _second: int) -> str: # Mark _year=0 as year not being used diff --git a/discord_bot/test/test_remind_in.py b/discord_bot/test/test_remind_in.py index b3d47190..b06b38a2 100644 --- a/discord_bot/test/test_remind_in.py +++ b/discord_bot/test/test_remind_in.py @@ -1,16 +1,12 @@ -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), '..')) - import random import arrow import hypothesis.strategies as st import pytest -from commands.public_remind import Remind from hypothesis import example, given, settings +from discord_bot.commands.public_remind import Remind + def create_time_shift_string(_day, _hour, _minute, _second): days = 'd day days'.split(' ') diff --git a/fastapi_server/Dockerfile b/fastapi_server/Dockerfile index b2b63b7e..0c34cdc3 100644 --- a/fastapi_server/Dockerfile +++ b/fastapi_server/Dockerfile @@ -12,5 +12,4 @@ ADD . /root/fastapi_server/fastapi_server CMD ["poetry", "run", "uvicorn", "fastapi_server.main:app", "--host", "0.0.0.0", "--port", "8000"] -# docker build -t burnysc2/fastapi_server:latest . -# docker run -d --rm --name fastapi_server -p 8000:8000 --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +# See run.sh diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 38439f18..03d5807b 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -1,3 +1,12 @@ +import sys +from pathlib import Path + +# Be able to launch from root folder +try: + sys.path.append(str(Path(__file__).parents[1])) +except IndexError: + pass + import os from typing import Literal diff --git a/fastapi_server/run.sh b/fastapi_server/run.sh new file mode 100644 index 00000000..459e769f --- /dev/null +++ b/fastapi_server/run.sh @@ -0,0 +1,5 @@ +docker build -t burnysc2/fastapi_server:latest . +docker run --rm --name fastapi_server \ + -p 8000:8000 \ + --mount type=bind,source="$(pwd)/data",destination=/root/fastapi_server/data \ + burnysc2/fastapi_server:latest diff --git a/fastapi_server/systemd/fastapiserver.service b/fastapi_server/systemd/fastapiserver.service index 2995eaf1..e2869641 100644 --- a/fastapi_server/systemd/fastapiserver.service +++ b/fastapi_server/systemd/fastapiserver.service @@ -1,6 +1,10 @@ # /etc/systemd/system/fastapiserver.service [Service] -ExecStart=/usr/bin/docker run --rm --name fastapi_server --publish 8000:8000 --env STAGE=PROD --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data burnysc2/fastapi_server:latest +ExecStart=/usr/bin/docker run --rm --name fastapi_server \ + --publish 8000:8000 \ + --env STAGE=PROD \ + --mount type=bind,source="/home/fastapiserver/data",destination=/root/fastapi_server/data \ + burnysc2/fastapi_server:latest Restart=always RestartSec=20 SyslogIdentifier=fastapiserver diff --git a/poetry.lock b/poetry.lock index 160195dc..b395d8ca 100644 --- a/poetry.lock +++ b/poetry.lock @@ -71,6 +71,17 @@ doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] +[[package]] +name = "arrow" +version = "1.2.2" +description = "Better dates & times for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +python-dateutil = ">=2.7.0" + [[package]] name = "asgiref" version = "3.5.2" @@ -84,7 +95,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.5" +version = "2.11.6" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -142,7 +153,7 @@ typecheck = ["mypy"] [[package]] name = "beanie" -version = "1.11.1" +version = "1.11.4" description = "Asynchronous Python ODM for MongoDB" category = "main" optional = false @@ -150,7 +161,7 @@ python-versions = ">=3.7,<4.0" [package.dependencies] click = ">=7" -motor = ">=2.5,<3.0" +motor = ">=2.5,<4.0" pydantic = ">=1.9.0" toml = "*" yarl = ">=1.6" @@ -237,6 +248,20 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "colorlog" +version = "6.6.0" +description = "Add colours to the output of Python's logging module." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] + [[package]] name = "commonmark" version = "0.9.1" @@ -343,6 +368,17 @@ category = "main" optional = false python-versions = ">=3" +[[package]] +name = "exceptiongroup" +version = "1.0.0rc8" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "fastapi" version = "0.76.0" @@ -430,9 +466,27 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "hikari" +version = "2.0.0.dev108" +description = "A sane Discord API for Python 3 built on asyncio and good intentions" +category = "main" +optional = false +python-versions = ">=3.8.0,<3.11" + +[package.dependencies] +aiohttp = ">=3.8,<4.0" +attrs = ">=21.4,<22.0" +colorlog = ">=6.6,<7.0" +multidict = ">=6.0,<7.0" + +[package.extras] +server = ["pynacl (>=1.5,<2.0)"] +speedups = ["aiodns (>=3.0,<4.0)", "cchardet (>=2.1,<3.0)", "Brotli (>=1.0,<2.0)", "ciso8601 (>=2.2,<3.0)"] + [[package]] name = "hypothesis" -version = "6.46.11" +version = "6.47.2" description = "A library for property-based testing" category = "dev" optional = false @@ -440,6 +494,7 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=19.2.0" +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11.0b1\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] @@ -568,7 +623,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "kiwisolver" -version = "1.4.2" +version = "1.4.3" description = "A fast implementation of the Cassowary constraint solver" category = "main" optional = false @@ -933,6 +988,14 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] +[[package]] +name = "ptable" +version = "0.9.2" +description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "py" version = "1.11.0" @@ -990,7 +1053,7 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.14.0" +version = "2.14.1" description = "python code static checker" category = "dev" optional = false @@ -1242,20 +1305,20 @@ mando = ">=0.6,<0.7" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2.0.0,<2.1.0" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] @@ -1411,7 +1474,7 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy2-stubs" -version = "0.0.2a23" +version = "0.0.2a24" description = "Typing Stubs for SQLAlchemy 1.4" category = "main" optional = false @@ -1649,7 +1712,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "3dac9866a2761ac0941f765b57fa945eaad6d88f506567e31f4adfdb524cf359" +content-hash = "ad2dcd4e64772455b4050dfb8d70a8a222e82311d1f32062d11b1d0ece8645d5" [metadata.files] aiocontextvars = [ @@ -1742,13 +1805,17 @@ anyio = [ {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, ] +arrow = [ + {file = "arrow-1.2.2-py3-none-any.whl", hash = "sha256:d622c46ca681b5b3e3574fcb60a04e5cc81b9625112d5fb2b44220c36c892177"}, + {file = "arrow-1.2.2.tar.gz", hash = "sha256:05caf1fd3d9a11a1135b2b6f09887421153b94558e5ef4d090b567b47173ac2b"}, +] asgiref = [ {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, ] astroid = [ - {file = "astroid-2.11.5-py3-none-any.whl", hash = "sha256:14ffbb4f6aa2cf474a0834014005487f7ecd8924996083ab411e7fa0b508ce0b"}, - {file = "astroid-2.11.5.tar.gz", hash = "sha256:f4e4ec5294c4b07ac38bab9ca5ddd3914d4bf46f9006eb5c0ae755755061044e"}, + {file = "astroid-2.11.6-py3-none-any.whl", hash = "sha256:ba33a82a9a9c06a5ceed98180c5aab16e29c285b828d94696bf32d6015ea82a9"}, + {file = "astroid-2.11.6.tar.gz", hash = "sha256:4f933d0bf5e408b03a6feb5d23793740c27e07340605f236496cd6ce552043d6"}, ] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, @@ -1776,8 +1843,8 @@ bcrypt = [ {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, ] beanie = [ - {file = "beanie-1.11.1-py3-none-any.whl", hash = "sha256:0b29f572a01535f3147b58405a881a72f19e92d9e74b49fa60c0c3289d3be153"}, - {file = "beanie-1.11.1.tar.gz", hash = "sha256:e3f9e1ce56847992c812b999251824e120e7eeba5cf05c89f5306a375760429d"}, + {file = "beanie-1.11.4-py3-none-any.whl", hash = "sha256:90251b6c51a4e28fe4e6c83dbbddce928f954079780ebc5f69b96f4bd348ee9c"}, + {file = "beanie-1.11.4.tar.gz", hash = "sha256:7bc63100e2add6bfb4a4159a460b88d91bc4e3c355be7194ba1ff18822714535"}, ] bokeh = [ {file = "bokeh-2.4.3-py3-none-any.whl", hash = "sha256:104d2f0a4ca7774ee4b11e545aa34ff76bf3e2ad6de0d33944361981b65da420"}, @@ -1859,6 +1926,10 @@ colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] +colorlog = [ + {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, + {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"}, +] commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, @@ -1953,6 +2024,10 @@ dpath = [ {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, ] +exceptiongroup = [ + {file = "exceptiongroup-1.0.0rc8-py3-none-any.whl", hash = "sha256:ab0a968e1ef769e55d9a596f4a89f7be9ffedbc9fdefdb77cc68cf5c33ce1035"}, + {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, +] fastapi = [ {file = "fastapi-0.76.0-py3-none-any.whl", hash = "sha256:1e05c868651e3935bd9b290c61a3661a54e37471d3a0700bc5e4380f9ed935ae"}, {file = "fastapi-0.76.0.tar.gz", hash = "sha256:a5f99f6e827c7108a8efaf1d7f19d6cf2d735ad984f5e44d33ccec6ee88a7da1"}, @@ -2090,9 +2165,13 @@ h11 = [ {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] +hikari = [ + {file = "hikari-2.0.0.dev108-py3-none-any.whl", hash = "sha256:bc78e5c753f0b87ae24e1a644a2e4d01d08d5ed35cbaca0f160da5283a589785"}, + {file = "hikari-2.0.0.dev108.tar.gz", hash = "sha256:d13cfcd0e3732185fa3048b5d9fd8b6078b5dbb0df7820ba7e3e55083bf9d4b5"}, +] hypothesis = [ - {file = "hypothesis-6.46.11-py3-none-any.whl", hash = "sha256:4c912677c2c5d7cf0c25f623d940c32a7003345bd476b8820d03ed1228a422ee"}, - {file = "hypothesis-6.46.11.tar.gz", hash = "sha256:f5c1cf61b24b094355577a6b8fbbb8eb54c1b0216fbc0519af97c46bddf43c42"}, + {file = "hypothesis-6.47.2-py3-none-any.whl", hash = "sha256:d6a7bb1b695edc57388b86960138d23aeddcb95192cff49755e280e3296558c9"}, + {file = "hypothesis-6.47.2.tar.gz", hash = "sha256:9c01a225eada7d74d38430e3e91e659e3a892fbc2b15f7b051779ded6ab73ee7"}, ] identify = [ {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, @@ -2177,49 +2256,49 @@ jinja2 = [ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] kiwisolver = [ - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e395ece147f0692ca7cdb05a028d31b83b72c369f7b4a2c1798f4b96af1e3d8"}, - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b7f50a1a25361da3440f07c58cd1d79957c2244209e4f166990e770256b6b0b"}, - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c032c41ae4c3a321b43a3650e6ecc7406b99ff3e5279f24c9b310f41bc98479"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dcade8f6fe12a2bb4efe2cbe22116556e3b6899728d3b2a0d3b367db323eacc"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e45e780a74416ef2f173189ef4387e44b5494f45e290bcb1f03735faa6779bf"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d2bb56309fb75a811d81ed55fbe2208aa77a3a09ff5f546ca95e7bb5fac6eff"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b2d6c12f2ad5f55104a36a356192cfb680c049fe5e7c1f6620fc37f119cdc2"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:262c248c60f22c2b547683ad521e8a3db5909c71f679b93876921549107a0c24"}, - {file = "kiwisolver-1.4.2-cp310-cp310-win32.whl", hash = "sha256:1008346a7741620ab9cc6c96e8ad9b46f7a74ce839dbb8805ddf6b119d5fc6c2"}, - {file = "kiwisolver-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:6ece2e12e4b57bc5646b354f436416cd2a6f090c1dadcd92b0ca4542190d7190"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b978afdb913ca953cf128d57181da2e8798e8b6153be866ae2a9c446c6162f40"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f88c4b8e449908eeddb3bbd4242bd4dc2c7a15a7aa44bb33df893203f02dc2d"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e348f1904a4fab4153407f7ccc27e43b2a139752e8acf12e6640ba683093dd96"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c839bf28e45d7ddad4ae8f986928dbf5a6d42ff79760d54ec8ada8fb263e097c"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ae5a071185f1a93777c79a9a1e67ac46544d4607f18d07131eece08d415083a"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c222f91a45da9e01a9bc4f760727ae49050f8e8345c4ff6525495f7a164c8973"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:a4e8f072db1d6fb7a7cc05a6dbef8442c93001f4bb604f1081d8c2db3ca97159"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:be9a650890fb60393e60aacb65878c4a38bb334720aa5ecb1c13d0dac54dd73b"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ec2e55bf31b43aabe32089125dca3b46fdfe9f50afbf0756ae11e14c97b80ca"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d1078ba770d6165abed3d9a1be1f9e79b61515de1dd00d942fa53bba79f01ae"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbb5eb4a2ea1ffec26268d49766cafa8f957fe5c1b41ad00733763fae77f9436"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e6cda72db409eefad6b021e8a4f964965a629f577812afc7860c69df7bdb84a"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1605c7c38cc6a85212dfd6a641f3905a33412e49f7c003f35f9ac6d71f67720"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81237957b15469ea9151ec8ca08ce05656090ffabc476a752ef5ad7e2644c526"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:240009fdf4fa87844f805e23f48995537a8cb8f8c361e35fda6b5ac97fcb906f"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:240c2d51d098395c012ddbcb9bd7b3ba5de412a1d11840698859f51d0e643c4f"}, - {file = "kiwisolver-1.4.2-cp38-cp38-win32.whl", hash = "sha256:8b6086aa6936865962b2cee0e7aaecf01ab6778ce099288354a7229b4d9f1408"}, - {file = "kiwisolver-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:0d98dca86f77b851350c250f0149aa5852b36572514d20feeadd3c6b1efe38d0"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:91eb4916271655dfe3a952249cb37a5c00b6ba68b4417ee15af9ba549b5ba61d"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa4d97d7d2b2c082e67907c0b8d9f31b85aa5d3ba0d33096b7116f03f8061261"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71469b5845b9876b8d3d252e201bef6f47bf7456804d2fbe9a1d6e19e78a1e65"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8ff3033e43e7ca1389ee59fb7ecb8303abb8713c008a1da49b00869e92e3dd7c"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89b57c2984f4464840e4b768affeff6b6809c6150d1166938ade3e22fbe22db8"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffbdb9a96c536f0405895b5e21ee39ec579cb0ed97bdbd169ae2b55f41d73219"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a830a03970c462d1a2311c90e05679da56d3bd8e78a4ba9985cb78ef7836c9f"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f74f2a13af201559e3d32b9ddfc303c94ae63d63d7f4326d06ce6fe67e7a8255"}, - {file = "kiwisolver-1.4.2-cp39-cp39-win32.whl", hash = "sha256:e677cc3626287f343de751e11b1e8a5b915a6ac897e8aecdbc996cd34de753a0"}, - {file = "kiwisolver-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b3e251e5c38ac623c5d786adb21477f018712f8c6fa54781bd38aa1c60b60fc2"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c380bb5ae20d829c1a5473cfcae64267b73aaa4060adc091f6df1743784aae0"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:484f2a5f0307bc944bc79db235f41048bae4106ffa764168a068d88b644b305d"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8afdf533b613122e4bbaf3c1e42c2a5e9e2d1dd3a0a017749a7658757cb377"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42f6ef9b640deb6f7d438e0a371aedd8bef6ddfde30683491b2e6f568b4e884e"}, - {file = "kiwisolver-1.4.2.tar.gz", hash = "sha256:7f606d91b8a8816be476513a77fd30abe66227039bd6f8b406c348cb0247dcc9"}, + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fd2842a0faed9ab9aba0922c951906132d9384be89690570f0ed18cd4f20e658"}, + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:caa59e2cae0e23b1e225447d7a9ddb0f982f42a6a22d497a484dfe62a06f7c0e"}, + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d2c744aeedce22c122bb42d176b4aa6d063202a05a4abdacb3e413c214b3694"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:afe173ac2646c2636305ab820cc0380b22a00a7bca4290452e7166b4f4fa49d0"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40240da438c0ebfe2aa76dd04b844effac6679423df61adbe3437d32f23468d9"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21a3a98f0a21fc602663ca9bce2b12a4114891bdeba2dea1e9ad84db59892fca"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51078855a16b7a4984ed2067b54e35803d18bca9861cb60c60f6234b50869a56"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16635f8dddbeb1b827977d0b00d07b644b040aeb9ff8607a9fc0997afa3e567"}, + {file = "kiwisolver-1.4.3-cp310-cp310-win32.whl", hash = "sha256:2d76780d9c65c7529cedd49fa4802d713e60798d8dc3b0d5b12a0a8f38cca51c"}, + {file = "kiwisolver-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:3a297d77b3d6979693f5948df02b89431ae3645ec95865e351fb45578031bdae"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ca3eefb02ef17257fae8b8555c85e7c1efdfd777f671384b0e4ef27409b02720"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d248c46c0aa406695bda2abf99632db991f8b3a6d46018721a2892312a99f069"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb55258931448d61e2d50187de4ee66fc9d9f34908b524949b8b2b93d0c57136"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bcf0009f2012847a688f2f4f9b16203ca4c835979a02549aa0595d9f457cc8"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e7cf940af5fee00a92e281eb157abe8770227a5255207818ea9a34e54a29f5b2"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dd22085446f3eca990d12a0878eeb5199dc9553b2e71716bfe7bed9915a472ab"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:d2578e5149ff49878934debfacf5c743fab49eca5ecdb983d0b218e1e554c498"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:5fb73cc8a34baba1dfa546ae83b9c248ef6150c238b06fc53d2773685b67ec67"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f70f3d028794e31cf9d1a822914efc935aadb2438ec4e8d4871d95eb1ce032d6"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71af5b43e4fa286a35110fc5bb740fdeae2b36ca79fbcf0a54237485baeee8be"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26b5a70bdab09e6a2f40babc4f8f992e3771751e144bda1938084c70d3001c09"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1858ad3cb686eccc7c6b7c5eac846a1cfd45aacb5811b2cf575e80b208f5622a"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dc350cb65fe4e3f737d50f0465fa6ea0dcae0e5722b7edf5d5b0a0e3cd2c3c7"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:007799c7fa934646318fc128b033bb6e6baabe7fbad521bfb2279aac26225cd7"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46fb56fde006b7ef5f8eaa3698299b0ea47444238b869ff3ced1426aa9fedcb5"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b9eb88593159a53a5ee0b0159daee531ff7dd9c87fa78f5d807ca059c7eb1b2b"}, + {file = "kiwisolver-1.4.3-cp38-cp38-win32.whl", hash = "sha256:3b1dcbc49923ac3c973184a82832e1f018dec643b1e054867d04a3a22255ec6a"}, + {file = "kiwisolver-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:7118ca592d25b2957ff7b662bc0fe4f4c2b5d5b27814b9b1bc9f2fb249a970e7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:747190fcdadc377263223f8f72b038381b3b549a8a3df5baf4d067da4749b046"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd628e63ffdba0112e3ddf1b1e9f3db29dd8262345138e08f4938acbc6d0805a"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22ccba48abae827a0f952a78a7b1a7ff01866131e5bbe1f826ce9bda406bf051"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:af24b21c2283ca69c416a8a42cde9764dc36c63d3389645d28c69b0e93db3cd7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:547111ef7cf13d73546c2de97ce434935626c897bdec96a578ca100b5fcd694b"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f85adfebd7d3c3db649efdf73659e1677a2cf3fa6e2556a3f373578af14bf7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ffd7cf165ff71afb202b3f36daafbf298932bee325aac9f58e1c9cd55838bef0"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b3136eecf7e1b4a4d23e4b19d6c4e7a8e0b42d55f30444e3c529700cdacaa0d"}, + {file = "kiwisolver-1.4.3-cp39-cp39-win32.whl", hash = "sha256:46c6e5018ba31d5ee7582f323d8661498a154dea1117486a571db4c244531f24"}, + {file = "kiwisolver-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:8395064d63b26947fa2c9faeea9c3eee35e52148c5339c37987e1d96fbf009b3"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:325fa1b15098e44fe4590a6c5c09a212ca10c6ebb5d96f7447d675f6c8340e4e"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:654280c5f41831ddcc5a331c0e3ce2e480bbc3d7c93c18ecf6236313aae2d61a"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae7aa0784aeadfbd693c27993727792fbe1455b84d49970bad5886b42976b18"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:130c6c35eded399d3967cf8a542c20b671f5ba85bd6f210f8b939f868360e9eb"}, + {file = "kiwisolver-1.4.3.tar.gz", hash = "sha256:ab8a15c2750ae8d53e31f77a94f846d0a00772240f1c12817411fa2344351f86"}, ] lazy-object-proxy = [ {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, @@ -2648,6 +2727,9 @@ psutil = [ {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, ] +ptable = [ + {file = "PTable-0.9.2.tar.gz", hash = "sha256:aa7fc151cb40f2dabcd2275ba6f7fd0ff8577a86be3365cd3fb297cbe09cc292"}, +] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, @@ -2705,8 +2787,8 @@ pygments = [ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.14.0-py3-none-any.whl", hash = "sha256:ef64ce5d4c17b8906caeaf2c2914ef3036a3a1b7f4a86f5fbf6caff9067c5f63"}, - {file = "pylint-2.14.0.tar.gz", hash = "sha256:10d291ea5133645f73fc1b51ca137ad6531223c1461a5632a1db029a9bc033b5"}, + {file = "pylint-2.14.1-py3-none-any.whl", hash = "sha256:bb71e6d169506de585edea997e48d9ff20c0dc0e2fbc1d166bad6b640120326b"}, + {file = "pylint-2.14.1.tar.gz", hash = "sha256:549261e0762c3466cc001024c4419c08252cb8c8d40f5c2c6966fea690e7fe2a"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -2925,8 +3007,8 @@ radon = [ {file = "radon-5.1.0.tar.gz", hash = "sha256:cb1d8752e5f862fb9e20d82b5f758cbc4fb1237c92c9a66450ea0ea7bf29aeee"}, ] requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, + {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, + {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, ] rich = [ {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, @@ -3069,8 +3151,8 @@ sqlalchemy = [ {file = "SQLAlchemy-1.4.37.tar.gz", hash = "sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea"}, ] sqlalchemy2-stubs = [ - {file = "sqlalchemy2-stubs-0.0.2a23.tar.gz", hash = "sha256:a13d94e23b5b0da8ee21986ef8890788a1f2eb26c2a9f39424cc933e4e7e87ff"}, - {file = "sqlalchemy2_stubs-0.0.2a23-py3-none-any.whl", hash = "sha256:6011d2219365d4e51f3e9d83ffeb5b904964ef1d143dc1298d8a70ce8641014d"}, + {file = "sqlalchemy2-stubs-0.0.2a24.tar.gz", hash = "sha256:e15c45302eafe196ed516f979ef017135fd619d2c62d02de9a5c5f2e59a600c4"}, + {file = "sqlalchemy2_stubs-0.0.2a24-py3-none-any.whl", hash = "sha256:f2399251d3d8f00a88659d711a449c855a0d4e977c7a9134e414f1459b9acc11"}, ] sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, diff --git a/pyproject.toml b/pyproject.toml index 2c0bd47c..048c2fb5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,6 +78,12 @@ matplotlib = "^3.5.2" bokeh = "^2.4.3" # Animation #manim = "^0.15.2" +# Datetime library +arrow = "^1.2.2" +# Discord bot +hikari = "^2.0.0-alpha.108" +# Table plotting +ptable = "^0.9.2" [tool.poetry.dev-dependencies] diff --git a/python_examples/main.py b/python_examples/main.py index 9cd0bd9f..bcc5f405 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -2,8 +2,6 @@ from pathlib import Path # Be able to launch from root folder -from platform import platform - try: sys.path.append(str(Path(__file__).parents[1])) except IndexError: @@ -13,6 +11,7 @@ # Coroutines and multiprocessing import asyncio import time +from platform import platform # Type annotation / hints from typing import List diff --git a/python_examples/poetry.lock b/python_examples/poetry.lock new file mode 100644 index 00000000..ae1dd3e4 --- /dev/null +++ b/python_examples/poetry.lock @@ -0,0 +1,3105 @@ +[[package]] +name = "aiocontextvars" +version = "0.2.2" +description = "Asyncio support for PEP-567 contextvars backport." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "aiohttp" +version = "3.8.1" +description = "Async http client/server framework (asyncio)" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +aiosignal = ">=1.1.2" +async-timeout = ">=4.0.0a3,<5.0" +attrs = ">=17.3.0" +charset-normalizer = ">=2.0,<3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["aiodns", "brotli", "cchardet"] + +[[package]] +name = "aiosignal" +version = "1.2.0" +description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "alembic" +version = "1.8.0" +description = "A database migration tool for SQLAlchemy." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} +importlib-resources = {version = "*", markers = "python_version < \"3.9\""} +Mako = "*" +SQLAlchemy = ">=1.3.0" + +[package.extras] +tz = ["python-dateutil"] + +[[package]] +name = "anyio" +version = "3.6.1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] + +[[package]] +name = "astroid" +version = "2.11.6" +description = "An abstract syntax tree for Python with inference support." +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0" +typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +wrapt = ">=1.11,<2" + +[[package]] +name = "async-timeout" +version = "4.0.2" +description = "Timeout context manager for asyncio programs" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "bcrypt" +version = "3.2.2" +description = "Modern password hashing for your software and your servers" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.1" + +[package.extras] +tests = ["pytest (>=3.2.1,!=3.3.0)"] +typecheck = ["mypy"] + +[[package]] +name = "beanie" +version = "1.11.4" +description = "Asynchronous Python ODM for MongoDB" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +click = ">=7" +motor = ">=2.5,<4.0" +pydantic = ">=1.9.0" +toml = "*" +yarl = ">=1.6" + +[[package]] +name = "bokeh" +version = "2.4.3" +description = "Interactive plots and applications in the browser from Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Jinja2 = ">=2.9" +numpy = ">=1.11.3" +packaging = ">=16.8" +pillow = ">=7.1.0" +PyYAML = ">=3.10" +tornado = ">=5.1" +typing-extensions = ">=3.10.0" + +[[package]] +name = "certifi" +version = "2022.5.18.1" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "cfgv" +version = "3.3.1" +description = "Validate configuration and produce human readable error messages." +category = "dev" +optional = false +python-versions = ">=3.6.1" + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "cloudpickle" +version = "2.1.0" +description = "Extended pickling support for Python objects" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "commonmark" +version = "0.9.1" +description = "Python parser for the CommonMark Markdown spec" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] + +[[package]] +name = "contextvars" +version = "2.4" +description = "PEP 567 Backport" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +immutables = ">=0.9" + +[[package]] +name = "coverage" +version = "6.4.1" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cryptography" +version = "37.0.2" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools_rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "dataclasses-json" +version = "0.5.7" +description = "Easily serialize dataclasses to and from JSON" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +marshmallow = ">=3.3.0,<4.0.0" +marshmallow-enum = ">=1.5.1,<2.0.0" +typing-inspect = ">=0.4.0" + +[package.extras] +dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] + +[[package]] +name = "dill" +version = "0.3.5.1" +description = "serialize all of python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + +[[package]] +name = "distlib" +version = "0.3.4" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "dpath" +version = "2.0.6" +description = "Filesystem-like pathing and searching for dictionaries" +category = "main" +optional = false +python-versions = ">=3" + +[[package]] +name = "exceptiongroup" +version = "1.0.0rc8" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "filelock" +version = "3.7.1" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] + +[[package]] +name = "fonttools" +version = "4.33.3" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["scipy", "munkres"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] + +[[package]] +name = "frozenlist" +version = "1.3.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "greenlet" +version = "1.1.2" +description = "Lightweight in-process concurrent programming" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["sphinx"] + +[[package]] +name = "hypothesis" +version = "6.47.2" +description = "A library for property-based testing" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11.0b1\""} +sortedcontainers = ">=2.1.0,<3.0.0" + +[package.extras] +all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] +cli = ["click (>=7.0)", "black (>=19.10b0)", "rich (>=9.0.0)"] +codemods = ["libcst (>=0.3.16)"] +dateutil = ["python-dateutil (>=1.4)"] +django = ["django (>=2.2)"] +dpcontracts = ["dpcontracts (>=0.4)"] +ghostwriter = ["black (>=19.10b0)"] +lark = ["lark-parser (>=0.6.5)"] +numpy = ["numpy (>=1.9.0)"] +pandas = ["pandas (>=0.25)"] +pytest = ["pytest (>=4.6)"] +pytz = ["pytz (>=2014.1)"] +redis = ["redis (>=3.0.0)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] + +[[package]] +name = "identify" +version = "2.5.1" +description = "File identification library for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "idna-ssl" +version = "1.1.0" +description = "Patch ssl.match_hostname for Unicode(idna) domains support" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +idna = ">=2.0" + +[[package]] +name = "immutables" +version = "0.18" +description = "Immutable Collections" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (==0.942)", "pytest (>=6.2.4,<6.3.0)"] + +[[package]] +name = "importlib-metadata" +version = "4.11.4" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + +[[package]] +name = "importlib-resources" +version = "5.7.1" +description = "Read resources from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] +plugins = ["setuptools"] + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "kiwisolver" +version = "1.4.3" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "lazy-object-proxy" +version = "1.7.1" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "loguru" +version = "0.6.0" +description = "Python logging made (stupidly) simple" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"] + +[[package]] +name = "lorem-text" +version = "2.1" +description = "Dummy lorem ipsum text generator" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +Click = ">=7.0" + +[[package]] +name = "mako" +version = "1.2.0" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "mando" +version = "0.6.4" +description = "Create Python CLI apps with little to no effort at all!" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + +[package.extras] +restructuredText = ["rst2ansi"] + +[[package]] +name = "markupsafe" +version = "2.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "marshmallow" +version = "3.16.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)"] +tests = ["pytest", "pytz", "simplejson"] + +[[package]] +name = "marshmallow-enum" +version = "1.5.1" +description = "Enum field for Marshmallow" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +marshmallow = ">=2.0.0" + +[[package]] +name = "matplotlib" +version = "3.5.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.17" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" +setuptools_scm = ">=4" + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mongoengine" +version = "0.24.1" +description = "MongoEngine is a Python Object-Document Mapper for working with MongoDB." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pymongo = ">=3.4,<5.0" + +[[package]] +name = "motor" +version = "2.5.1" +description = "Non-blocking MongoDB driver for Tornado or asyncio" +category = "main" +optional = false +python-versions = ">=3.5.2" + +[package.dependencies] +pymongo = ">=3.12,<4" + +[package.extras] +encryption = ["pymongo[encryption] (>=3.12,<4)"] + +[[package]] +name = "multidict" +version = "6.0.2" +description = "multidict implementation" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mypy" +version = "0.950" +description = "Optional static typing for Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "nodeenv" +version = "1.6.0" +description = "Node.js virtual environment builder" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "numpy" +version = "1.22.4" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pandas" +version = "1.4.2" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = [ + {version = ">=1.18.5", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, + {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, +] +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" + +[package.extras] +test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] + +[[package]] +name = "paramiko" +version = "2.11.0" +description = "SSH2 protocol library" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +bcrypt = ">=3.1.3" +cryptography = ">=2.5" +pynacl = ">=1.0.1" +six = "*" + +[package.extras] +all = ["pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "bcrypt (>=3.1.3)", "invoke (>=1.3)", "gssapi (>=1.4.1)", "pywin32 (>=2.1.8)"] +ed25519 = ["pynacl (>=1.0.1)", "bcrypt (>=3.1.3)"] +gssapi = ["pyasn1 (>=0.1.7)", "gssapi (>=1.4.1)", "pywin32 (>=2.1.8)"] +invoke = ["invoke (>=1.3)"] + +[[package]] +name = "peewee" +version = "3.14.10" +description = "a little orm" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pendulum" +version = "2.1.2" +description = "Python datetimes made easy" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +python-dateutil = ">=2.6,<3.0" +pytzdata = ">=2020.1" + +[[package]] +name = "pillow" +version = "9.1.1" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pre-commit" +version = "2.19.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +toml = "*" +virtualenv = ">=20.0.8" + +[[package]] +name = "psutil" +version = "5.9.1" +description = "Cross-platform lib for process and system monitoring in Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "py-cpuinfo" +version = "8.0.0" +description = "Get CPU info with pure Python 2 & 3" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydantic" +version = "1.9.1" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +typing-extensions = ">=3.7.4.3" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pygments" +version = "2.12.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "pylint" +version = "2.14.1" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.7.2" + +[package.dependencies] +astroid = ">=2.11.5,<=2.12.0-dev0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +dill = ">=0.2" +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pymongo" +version = "3.12.3" +description = "Python driver for MongoDB " +category = "main" +optional = false +python-versions = "*" + +[package.extras] +aws = ["pymongo-auth-aws (<2.0.0)"] +encryption = ["pymongocrypt (>=1.1.0,<2.0.0)"] +gssapi = ["pykerberos"] +ocsp = ["pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)", "certifi"] +snappy = ["python-snappy"] +srv = ["dnspython (>=1.16.0,<1.17.0)"] +tls = ["ipaddress"] +zstd = ["zstandard"] + +[[package]] +name = "pynacl" +version = "1.5.0" +description = "Python binding to the Networking and Cryptography (NaCl) library" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] +tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"] + +[[package]] +name = "pynvml" +version = "11.4.1" +description = "Python Bindings for the NVIDIA Management Library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pytest" +version = "7.1.2" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.18.3" +description = "Pytest support for asyncio" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pytest = ">=6.1.0" + +[package.extras] +testing = ["coverage (==6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (==0.931)", "pytest-trio (>=0.7.0)"] + +[[package]] +name = "pytest-benchmark" +version = "3.4.1" +description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +py-cpuinfo = "*" +pytest = ">=3.8" + +[package.extras] +aspect = ["aspectlib"] +elasticsearch = ["elasticsearch"] +histogram = ["pygal", "pygaljs"] + +[[package]] +name = "pytest-cov" +version = "3.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "0.20.0" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pytz" +version = "2022.1" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pytzdata" +version = "2020.1" +description = "The Olson timezone database for Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "radon" +version = "5.1.0" +description = "Code Metrics in Python" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +colorama = {version = ">=0.4.1", markers = "python_version > \"3.4\""} +future = "*" +mando = ">=0.6,<0.7" + +[[package]] +name = "requests" +version = "2.28.0" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2.0.0,<2.1.0" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] +name = "rich" +version = "12.4.4" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "dev" +optional = false +python-versions = ">=3.6.3,<4.0.0" + +[package.dependencies] +commonmark = ">=0.9.0,<0.10.0" +pygments = ">=2.6.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] + +[[package]] +name = "scalene" +version = "1.5.8" +description = "Scalene: A high-resolution, low-overhead CPU, GPU, and memory profiler for Python" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +cloudpickle = ">=1.5.0" +numpy = "*" +pynvml = ">=11.0.0" +rich = ">=9.2.0" + +[[package]] +name = "scipy" +version = "1.8.1" +description = "SciPy: Scientific Library for Python" +category = "main" +optional = false +python-versions = ">=3.8,<3.11" + +[package.dependencies] +numpy = ">=1.17.3,<1.25.0" + +[[package]] +name = "seaborn" +version = "0.11.2" +description = "seaborn: statistical data visualization" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +matplotlib = ">=2.2" +numpy = ">=1.15" +pandas = ">=0.23" +scipy = ">=1.0" + +[[package]] +name = "setuptools-scm" +version = "6.4.2" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +packaging = ">=20.0" +tomli = ">=1.0.0" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] + +[[package]] +name = "shapely" +version = "1.8.2" +description = "Geometric objects, predicates, and operations" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +all = ["pytest", "pytest-cov", "numpy"] +test = ["pytest", "pytest-cov"] +vectorized = ["numpy"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "snakeviz" +version = "2.1.1" +description = "A web-based viewer for Python profiler output" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +tornado = ">=2.0" + +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "sqlalchemy" +version = "1.4.37" +description = "Database Abstraction Library" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} + +[package.extras] +aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] +aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,!=0.2.4)"] +mariadb_connector = ["mariadb (>=1.0.1)"] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mypy = ["sqlalchemy2-stubs", "mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0,<2)", "mysqlclient (>=1.4.0)"] +mysql_connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] +postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql (<1)", "pymysql"] +sqlcipher = ["sqlcipher3-binary"] + +[[package]] +name = "sqlalchemy2-stubs" +version = "0.0.2a23" +description = "Typing Stubs for SQLAlchemy 1.4" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = ">=3.7.4" + +[[package]] +name = "sqlmodel" +version = "0.0.6" +description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness." +category = "main" +optional = false +python-versions = ">=3.6.1,<4.0.0" + +[package.dependencies] +pydantic = ">=1.8.2,<2.0.0" +SQLAlchemy = ">=1.4.17,<1.5.0" +sqlalchemy2-stubs = "*" + +[[package]] +name = "tinydb" +version = "4.7.0" +description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +category = "main" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "tomlkit" +version = "0.11.0" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "tornado" +version = "6.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "main" +optional = false +python-versions = ">= 3.5" + +[[package]] +name = "typing-extensions" +version = "4.2.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "typing-inspect" +version = "0.7.1" +description = "Runtime inspection utilities for typing module." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "urllib3" +version = "1.26.9" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "virtualenv" +version = "20.14.1" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +distlib = ">=0.3.1,<1" +filelock = ">=3.2,<4" +platformdirs = ">=2,<3" +six = ">=1.9.0,<2" + +[package.extras] +docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] +testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] + +[[package]] +name = "watchgod" +version = "0.8.2" +description = "Simple, modern file watching and code reload in python." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +anyio = ">=3.0.0,<4" + +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "yapf" +version = "0.32.0" +description = "A formatter for Python code." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "yarl" +version = "1.7.2" +description = "Yet another URL library" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[[package]] +name = "zipp" +version = "3.8.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[metadata] +lock-version = "1.1" +python-versions = ">=3.8, <3.11" +content-hash = "935e2a4080276849c01b4dc1322d41c88eae2720fd51fafd23921e4fc2784782" + +[metadata.files] +aiocontextvars = [ + {file = "aiocontextvars-0.2.2-py2.py3-none-any.whl", hash = "sha256:885daf8261818767d8f7cbd79f9d4482d118f024b6586ef6e67980236a27bfa3"}, + {file = "aiocontextvars-0.2.2.tar.gz", hash = "sha256:f027372dc48641f683c559f247bd84962becaacdc9ba711d583c3871fb5652aa"}, +] +aiohttp = [ + {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8"}, + {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8"}, + {file = "aiohttp-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1"}, + {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3"}, + {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2"}, + {file = "aiohttp-3.8.1-cp310-cp310-win32.whl", hash = "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa"}, + {file = "aiohttp-3.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32"}, + {file = "aiohttp-3.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091"}, + {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782"}, + {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4"}, + {file = "aiohttp-3.8.1-cp36-cp36m-win32.whl", hash = "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602"}, + {file = "aiohttp-3.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96"}, + {file = "aiohttp-3.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2"}, + {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7"}, + {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c"}, + {file = "aiohttp-3.8.1-cp37-cp37m-win32.whl", hash = "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9"}, + {file = "aiohttp-3.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b"}, + {file = "aiohttp-3.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675"}, + {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155"}, + {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33"}, + {file = "aiohttp-3.8.1-cp38-cp38-win32.whl", hash = "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a"}, + {file = "aiohttp-3.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74"}, + {file = "aiohttp-3.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf"}, + {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866"}, + {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2"}, + {file = "aiohttp-3.8.1-cp39-cp39-win32.whl", hash = "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1"}, + {file = "aiohttp-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac"}, + {file = "aiohttp-3.8.1.tar.gz", hash = "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"}, +] +aiosignal = [ + {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, + {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, +] +alembic = [ + {file = "alembic-1.8.0-py3-none-any.whl", hash = "sha256:b5ae4bbfc7d1302ed413989d39474d102e7cfa158f6d5969d2497955ffe85a30"}, + {file = "alembic-1.8.0.tar.gz", hash = "sha256:a2d4d90da70b30e70352cd9455e35873a255a31402a438fe24815758d7a0e5e1"}, +] +anyio = [ + {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, + {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, +] +astroid = [ + {file = "astroid-2.11.6-py3-none-any.whl", hash = "sha256:ba33a82a9a9c06a5ceed98180c5aab16e29c285b828d94696bf32d6015ea82a9"}, + {file = "astroid-2.11.6.tar.gz", hash = "sha256:4f933d0bf5e408b03a6feb5d23793740c27e07340605f236496cd6ce552043d6"}, +] +async-timeout = [ + {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, + {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +bcrypt = [ + {file = "bcrypt-3.2.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:7180d98a96f00b1050e93f5b0f556e658605dd9f524d0b0e68ae7944673f525e"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:61bae49580dce88095d669226d5076d0b9d927754cedbdf76c6c9f5099ad6f26"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88273d806ab3a50d06bc6a2fc7c87d737dd669b76ad955f449c43095389bc8fb"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6d2cb9d969bfca5bc08e45864137276e4c3d3d7de2b162171def3d188bf9d34a"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b02d6bfc6336d1094276f3f588aa1225a598e27f8e3388f4db9948cb707b521"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c46100e315c3a5b90fdc53e429c006c5f962529bc27e1dfd656292c20ccc40"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7d9ba2e41e330d2af4af6b1b6ec9e6128e91343d0b4afb9282e54e5508f31baa"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cd43303d6b8a165c29ec6756afd169faba9396a9472cdff753fe9f19b96ce2fa"}, + {file = "bcrypt-3.2.2-cp36-abi3-win32.whl", hash = "sha256:4e029cef560967fb0cf4a802bcf4d562d3d6b4b1bf81de5ec1abbe0f1adb027e"}, + {file = "bcrypt-3.2.2-cp36-abi3-win_amd64.whl", hash = "sha256:7ff2069240c6bbe49109fe84ca80508773a904f5a8cb960e02a977f7f519b129"}, + {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, +] +beanie = [ + {file = "beanie-1.11.4-py3-none-any.whl", hash = "sha256:90251b6c51a4e28fe4e6c83dbbddce928f954079780ebc5f69b96f4bd348ee9c"}, + {file = "beanie-1.11.4.tar.gz", hash = "sha256:7bc63100e2add6bfb4a4159a460b88d91bc4e3c355be7194ba1ff18822714535"}, +] +bokeh = [ + {file = "bokeh-2.4.3-py3-none-any.whl", hash = "sha256:104d2f0a4ca7774ee4b11e545aa34ff76bf3e2ad6de0d33944361981b65da420"}, + {file = "bokeh-2.4.3.tar.gz", hash = "sha256:ef33801161af379665ab7a34684f2209861e3aefd5c803a21fbbb99d94874b03"}, +] +certifi = [ + {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, + {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, +] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] +cfgv = [ + {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, + {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] +cloudpickle = [ + {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, + {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +commonmark = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] +contextvars = [ + {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, +] +coverage = [ + {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c4e737f60c6936460c5be330d296dd5b48b3963f48634c53b3f7deb0f34ec4"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84e65ef149028516c6d64461b95a8dbcfce95cfd5b9eb634320596173332ea84"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f69718750eaae75efe506406c490d6fc5a6161d047206cc63ce25527e8a3adad"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e57816f8ffe46b1df8f12e1b348f06d164fd5219beba7d9433ba79608ef011cc"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:01c5615d13f3dd3aa8543afc069e5319cfa0c7d712f6e04b920431e5c564a749"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ab269400706fab15981fd4bd5080c56bd5cc07c3bccb86aab5e1d5a88dc8f4"}, + {file = "coverage-6.4.1-cp310-cp310-win32.whl", hash = "sha256:a7f3049243783df2e6cc6deafc49ea123522b59f464831476d3d1448e30d72df"}, + {file = "coverage-6.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2ddcac99b2d2aec413e36d7a429ae9ebcadf912946b13ffa88e7d4c9b712d6"}, + {file = "coverage-6.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb73e0011b8793c053bfa85e53129ba5f0250fdc0392c1591fd35d915ec75c46"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106c16dfe494de3193ec55cac9640dd039b66e196e4641fa8ac396181578b982"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f4f3df85aa39da00fd3ec4b5abeb7407e82b68c7c5ad181308b0e2526da5d4"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961e2fb0680b4f5ad63234e0bf55dfb90d302740ae9c7ed0120677a94a1590cb"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cec3a0f75c8f1031825e19cd86ee787e87cf03e4fd2865c79c057092e69e3a3b"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:129cd05ba6f0d08a766d942a9ed4b29283aff7b2cccf5b7ce279d50796860bb3"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bf5601c33213d3cb19d17a796f8a14a9eaa5e87629a53979a5981e3e3ae166f6"}, + {file = "coverage-6.4.1-cp37-cp37m-win32.whl", hash = "sha256:269eaa2c20a13a5bf17558d4dc91a8d078c4fa1872f25303dddcbba3a813085e"}, + {file = "coverage-6.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f02cbbf8119db68455b9d763f2f8737bb7db7e43720afa07d8eb1604e5c5ae28"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffa9297c3a453fba4717d06df579af42ab9a28022444cae7fa605af4df612d54"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:145f296d00441ca703a659e8f3eb48ae39fb083baba2d7ce4482fb2723e050d9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d44996140af8b84284e5e7d398e589574b376fb4de8ccd28d82ad8e3bea13"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bd9a6fc18aab8d2e18f89b7ff91c0f34ff4d5e0ba0b33e989b3cd4194c81fd9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3384f2a3652cef289e38100f2d037956194a837221edd520a7ee5b42d00cc605"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b3e07152b4563722be523e8cd0b209e0d1a373022cfbde395ebb6575bf6790d"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1480ff858b4113db2718848d7b2d1b75bc79895a9c22e76a221b9d8d62496428"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:865d69ae811a392f4d06bde506d531f6a28a00af36f5c8649684a9e5e4a85c83"}, + {file = "coverage-6.4.1-cp38-cp38-win32.whl", hash = "sha256:664a47ce62fe4bef9e2d2c430306e1428ecea207ffd68649e3b942fa8ea83b0b"}, + {file = "coverage-6.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:26dff09fb0d82693ba9e6231248641d60ba606150d02ed45110f9ec26404ed1c"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9c80df769f5ec05ad21ea34be7458d1dc51ff1fb4b2219e77fe24edf462d6df"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39ee53946bf009788108b4dd2894bf1349b4e0ca18c2016ffa7d26ce46b8f10d"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b66caa62922531059bc5ac04f836860412f7f88d38a476eda0a6f11d4724f4"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd180ed867e289964404051a958f7cccabdeed423f91a899829264bb7974d3d3"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84631e81dd053e8a0d4967cedab6db94345f1c36107c71698f746cb2636c63e3"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c08da0bd238f2970230c2a0d28ff0e99961598cb2e810245d7fc5afcf1254e8"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d42c549a8f41dc103a8004b9f0c433e2086add8a719da00e246e17cbe4056f72"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:309ce4a522ed5fca432af4ebe0f32b21d6d7ccbb0f5fcc99290e71feba67c264"}, + {file = "coverage-6.4.1-cp39-cp39-win32.whl", hash = "sha256:fdb6f7bd51c2d1714cea40718f6149ad9be6a2ee7d93b19e9f00934c0f2a74d9"}, + {file = "coverage-6.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:342d4aefd1c3e7f620a13f4fe563154d808b69cccef415415aece4c786665397"}, + {file = "coverage-6.4.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:4803e7ccf93230accb928f3a68f00ffa80a88213af98ed338a57ad021ef06815"}, + {file = "coverage-6.4.1.tar.gz", hash = "sha256:4321f075095a096e70aff1d002030ee612b65a205a0a0f5b815280d5dc58100c"}, +] +cryptography = [ + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3c81599befb4d4f3d7648ed3217e00d21a9341a9a688ecdd615ff72ffbed7336"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2bd1096476aaac820426239ab534b636c77d71af66c547b9ddcd76eb9c79e004"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:31fe38d14d2e5f787e0aecef831457da6cec68e0bb09a35835b0b44ae8b988fe"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:093cb351031656d3ee2f4fa1be579a8c69c754cf874206be1d4cf3b542042804"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59b281eab51e1b6b6afa525af2bd93c16d49358404f814fe2c2410058623928c"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:0cc20f655157d4cfc7bada909dc5cc228211b075ba8407c46467f63597c78178"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f8ec91983e638a9bcd75b39f1396e5c0dc2330cbd9ce4accefe68717e6779e0a"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:46f4c544f6557a2fefa7ac8ac7d1b17bf9b647bd20b16decc8fbcab7117fbc15"}, + {file = "cryptography-37.0.2-cp36-abi3-win32.whl", hash = "sha256:731c8abd27693323b348518ed0e0705713a36d79fdbd969ad968fbef0979a7e0"}, + {file = "cryptography-37.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:471e0d70201c069f74c837983189949aa0d24bb2d751b57e26e3761f2f782b8d"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a68254dd88021f24a68b613d8c51d5c5e74d735878b9e32cc0adf19d1f10aaf9"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:a7d5137e556cc0ea418dca6186deabe9129cee318618eb1ffecbd35bee55ddc1"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aeaba7b5e756ea52c8861c133c596afe93dd716cbcacae23b80bc238202dc023"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95e590dd70642eb2079d280420a888190aa040ad20f19ec8c6e097e38aa29e06"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1b9362d34363f2c71b7853f6251219298124aa4cc2075ae2932e64c91a3e2717"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e53258e69874a306fcecb88b7534d61820db8a98655662a3dd2ec7f1afd9132f"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:1f3bfbd611db5cb58ca82f3deb35e83af34bb8cf06043fa61500157d50a70982"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:419c57d7b63f5ec38b1199a9521d77d7d1754eb97827bbb773162073ccd8c8d4"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:dc26bb134452081859aa21d4990474ddb7e863aa39e60d1592800a8865a702de"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452"}, + {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, +] +cycler = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] +dataclasses-json = [ + {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, + {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, +] +dill = [ + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, +] +distlib = [ + {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, + {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, +] +dpath = [ + {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, + {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, +] +exceptiongroup = [ + {file = "exceptiongroup-1.0.0rc8-py3-none-any.whl", hash = "sha256:ab0a968e1ef769e55d9a596f4a89f7be9ffedbc9fdefdb77cc68cf5c33ce1035"}, + {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, +] +filelock = [ + {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, + {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, +] +fonttools = [ + {file = "fonttools-4.33.3-py3-none-any.whl", hash = "sha256:f829c579a8678fa939a1d9e9894d01941db869de44390adb49ce67055a06cc2a"}, + {file = "fonttools-4.33.3.zip", hash = "sha256:c0fdcfa8ceebd7c1b2021240bd46ef77aa8e7408cf10434be55df52384865f8e"}, +] +frozenlist = [ + {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, + {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, + {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"}, + {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"}, + {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"}, + {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"}, + {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"}, + {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"}, + {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"}, + {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"}, + {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"}, + {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"}, + {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"}, + {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"}, + {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"}, + {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"}, + {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"}, + {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"}, + {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"}, + {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"}, + {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"}, + {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, + {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +greenlet = [ + {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, + {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, + {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, + {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, + {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, + {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, + {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, + {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, + {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, + {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, + {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, + {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, + {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, + {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, + {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, + {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, + {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, + {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, + {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, + {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, + {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, + {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, + {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, + {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, + {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, + {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, +] +hypothesis = [ + {file = "hypothesis-6.47.2-py3-none-any.whl", hash = "sha256:d6a7bb1b695edc57388b86960138d23aeddcb95192cff49755e280e3296558c9"}, + {file = "hypothesis-6.47.2.tar.gz", hash = "sha256:9c01a225eada7d74d38430e3e91e659e3a892fbc2b15f7b051779ded6ab73ee7"}, +] +identify = [ + {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, + {file = "identify-2.5.1.tar.gz", hash = "sha256:3d11b16f3fe19f52039fb7e39c9c884b21cb1b586988114fbe42671f03de3e82"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +idna-ssl = [ + {file = "idna-ssl-1.1.0.tar.gz", hash = "sha256:a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c"}, +] +immutables = [ + {file = "immutables-0.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d841dfa15b932bdad27f5149bce86b32d0dd8a29679ed61405677317b6893447"}, + {file = "immutables-0.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29a5886845cd0ca8263b721337750a895e28feee2f16694a526977a791909db5"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e979a9225507e3cd830ea73ac68b69fe82f495313a891485800daa5b6567e05"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9949f704b80d0e601587d0a3b1a0cc6ff5d49528f6dfc1c8a1476b2137bb925e"}, + {file = "immutables-0.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b6c820c9bb5aac62b76de703384bb8bb706108be90c3def4a7f047f185a92bb"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:03696193b276db3a9b619629685198886ddd7c4098c544bd8d0f87532c74120b"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:798b4d6c388116effa7523591e4e39865292e4fa74e169b05a0759a16f604ce1"}, + {file = "immutables-0.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b3621256bc8058a7973f736b9e2c940e17133476265a0a83b8df8c0f446ca32f"}, + {file = "immutables-0.18-cp310-cp310-win32.whl", hash = "sha256:98f67bd36532582751dcc9021fdb60e7efc82e5717ae5927b84d0b86ea58fe12"}, + {file = "immutables-0.18-cp310-cp310-win_amd64.whl", hash = "sha256:69352b45a115808219feaf0bb7a551e9aa76c72684db93cd03f11474165f4569"}, + {file = "immutables-0.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ee2d6f8816fce53fa89b6a1ba2d4a96b344bf584d6ed0b10a871b17fff46e49"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13159cedb698fdd243d9f2a7469c1628e075a180fc02f865dd98322b92a14aaf"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d72527fde329e3b566b67c954237be52b07d6e84ff23dcc1e94499755cacff6"}, + {file = "immutables-0.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53fccddd28cc3214aa48ca564702311c07eac069190dd890e097802c5d69b33a"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a29e3aa0fe05fb2cc6b31039f448aa6206d7f0cdb660c98aa9be6d12070d6840"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ffced8535cc673fcfb411d28ba5744689a6978fa596c803725a76f43c1bda911"}, + {file = "immutables-0.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9f17407491164beb689d426f7985f79ae9dfa69868653cfbdb95645f6bf05cb0"}, + {file = "immutables-0.18-cp36-cp36m-win32.whl", hash = "sha256:74456c579cfd53f883cdcc0700e3871648a3316767efc1adf8c723ad3d8addec"}, + {file = "immutables-0.18-cp36-cp36m-win_amd64.whl", hash = "sha256:e4c2110173649acf67bd763bbd2a9c3a863a1d20fd7f3db3493ce4e0fb04fae5"}, + {file = "immutables-0.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa5292630b08c874972931bac06ee381cb6fb7382d7be1856234d7bd4a8e676"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc830a689a55e404f0e23d7d69e01c218fa8a0be54a6ca5df45b6fbfeeac648a"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5caf9c670e6851e7f310716c7dcdf8705236d13056eda1fab3deaad5d7198468"}, + {file = "immutables-0.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:853d63f4a07b2ea2131ba0831aeec11f6a6ee5e290e8f175bf56842762d7412e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9a86dcca4bb406f80e7a18c233aec0e76a7530c456e24aa1e19a708a34f2aac1"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6baf4dc11ba0e9f41a6cbde7ecaa7af9cb482559b92ba3254e3e37a518b1970e"}, + {file = "immutables-0.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:734ec4467dd15f9135ca5ecccc91e796a67d27c227e81554f9e06b1bb3b28d6d"}, + {file = "immutables-0.18-cp37-cp37m-win32.whl", hash = "sha256:f6edb73619aa0a5fe4a77d97dd9d39bfeef61a5afe71aa5bdceccf59b933999e"}, + {file = "immutables-0.18-cp37-cp37m-win_amd64.whl", hash = "sha256:fade8ccf7afbc1e7ea353159fa90cc04395f2f4f57658160d7a02f6aa60c4e77"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8b650d779a46441dccd02e7ee8326dbd0dec633c6bd75e9fe13373a6b19570dd"}, + {file = "immutables-0.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1acbbc333f1643fd1ed21bcc3e09aad2ef6648478a0cae76a2ca5823764a7d3b"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3bad4d43009fa61ea40d887e6fa89ae7c4e62dff5e4a878d60b76cf245720bb"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e04b61ddffd4ccb4d7ab823b2e55dbb4ad47c37697e311fae4b98b3c023ab194"}, + {file = "immutables-0.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54577e46c5332d7390212040c084335b7d667504847ed2788428d44f20e595ce"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1330f96eb6a3a11f5d02f30b2c6393ef30d01a79f7144d63d2a3e6ff05cb99db"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1d6821d7718cf9f4a7b1d9e765fc22a9d1ae0fad3fabd8724b4e614d2a6e0b54"}, + {file = "immutables-0.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45bd862a5dfb952eaff4a9c2448712c5a550dd956575e23cbfc512010fb06c74"}, + {file = "immutables-0.18-cp38-cp38-win32.whl", hash = "sha256:989606e440492736112b471dcd80586e3d4a63bc6f8ff4f9d1d612e0f96cb683"}, + {file = "immutables-0.18-cp38-cp38-win_amd64.whl", hash = "sha256:ac9e05f846392e983fb59f74ed2334031b366251d16d24122e4c85f70fb6e2da"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:de1a091ab89b7ba50501a915a0fbdceb52b079c752f4f7c76d2060237774a714"}, + {file = "immutables-0.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d43b16b6adbe1327c6688e14b125cb3b940e748790b305de96c8d55668ac25f"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f32b5933393e4cc204d8f9e7d9f503ec052e30f612090be0de0dd31b1464b35"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525fe9001b5a96c325eec41677efaeb8c3610776e834ce7f31fbe3d33cc05252"}, + {file = "immutables-0.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11da4946e19f3b24a873b2ba2891cc226a89bb398561c62dfb966a9b6501a4a"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:90da9dea0a1c0a907d511f124cd87fe090c0e30a951c3fe68bc9782ae4f2c77f"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77bdc96dc24e32839557cde3785f8039a369c95529ff9179044b81d0ba4bd02c"}, + {file = "immutables-0.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:210efea163a704597cfdb2d30713d3c0963c30f0d997539c9ab5da40e3d6a886"}, + {file = "immutables-0.18-cp39-cp39-win32.whl", hash = "sha256:535616ad7ca1174a27ade637192c970bfedb0b0e0467e69ce415b40d7cf7ba0c"}, + {file = "immutables-0.18-cp39-cp39-win_amd64.whl", hash = "sha256:1338aad6fd69f11442adcbb3402a028c90f6e945682ddb8aba462a3827f2d427"}, + {file = "immutables-0.18.tar.gz", hash = "sha256:5336c7974084cce62f7e29aaff81a3c3f75e0fd0a23a2faeb986ae0ea08d8cf4"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, +] +importlib-resources = [ + {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, + {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +kiwisolver = [ + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fd2842a0faed9ab9aba0922c951906132d9384be89690570f0ed18cd4f20e658"}, + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:caa59e2cae0e23b1e225447d7a9ddb0f982f42a6a22d497a484dfe62a06f7c0e"}, + {file = "kiwisolver-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d2c744aeedce22c122bb42d176b4aa6d063202a05a4abdacb3e413c214b3694"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:afe173ac2646c2636305ab820cc0380b22a00a7bca4290452e7166b4f4fa49d0"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40240da438c0ebfe2aa76dd04b844effac6679423df61adbe3437d32f23468d9"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21a3a98f0a21fc602663ca9bce2b12a4114891bdeba2dea1e9ad84db59892fca"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51078855a16b7a4984ed2067b54e35803d18bca9861cb60c60f6234b50869a56"}, + {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16635f8dddbeb1b827977d0b00d07b644b040aeb9ff8607a9fc0997afa3e567"}, + {file = "kiwisolver-1.4.3-cp310-cp310-win32.whl", hash = "sha256:2d76780d9c65c7529cedd49fa4802d713e60798d8dc3b0d5b12a0a8f38cca51c"}, + {file = "kiwisolver-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:3a297d77b3d6979693f5948df02b89431ae3645ec95865e351fb45578031bdae"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ca3eefb02ef17257fae8b8555c85e7c1efdfd777f671384b0e4ef27409b02720"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d248c46c0aa406695bda2abf99632db991f8b3a6d46018721a2892312a99f069"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb55258931448d61e2d50187de4ee66fc9d9f34908b524949b8b2b93d0c57136"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bcf0009f2012847a688f2f4f9b16203ca4c835979a02549aa0595d9f457cc8"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e7cf940af5fee00a92e281eb157abe8770227a5255207818ea9a34e54a29f5b2"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dd22085446f3eca990d12a0878eeb5199dc9553b2e71716bfe7bed9915a472ab"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:d2578e5149ff49878934debfacf5c743fab49eca5ecdb983d0b218e1e554c498"}, + {file = "kiwisolver-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:5fb73cc8a34baba1dfa546ae83b9c248ef6150c238b06fc53d2773685b67ec67"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f70f3d028794e31cf9d1a822914efc935aadb2438ec4e8d4871d95eb1ce032d6"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71af5b43e4fa286a35110fc5bb740fdeae2b36ca79fbcf0a54237485baeee8be"}, + {file = "kiwisolver-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26b5a70bdab09e6a2f40babc4f8f992e3771751e144bda1938084c70d3001c09"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1858ad3cb686eccc7c6b7c5eac846a1cfd45aacb5811b2cf575e80b208f5622a"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dc350cb65fe4e3f737d50f0465fa6ea0dcae0e5722b7edf5d5b0a0e3cd2c3c7"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:007799c7fa934646318fc128b033bb6e6baabe7fbad521bfb2279aac26225cd7"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46fb56fde006b7ef5f8eaa3698299b0ea47444238b869ff3ced1426aa9fedcb5"}, + {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b9eb88593159a53a5ee0b0159daee531ff7dd9c87fa78f5d807ca059c7eb1b2b"}, + {file = "kiwisolver-1.4.3-cp38-cp38-win32.whl", hash = "sha256:3b1dcbc49923ac3c973184a82832e1f018dec643b1e054867d04a3a22255ec6a"}, + {file = "kiwisolver-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:7118ca592d25b2957ff7b662bc0fe4f4c2b5d5b27814b9b1bc9f2fb249a970e7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:747190fcdadc377263223f8f72b038381b3b549a8a3df5baf4d067da4749b046"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd628e63ffdba0112e3ddf1b1e9f3db29dd8262345138e08f4938acbc6d0805a"}, + {file = "kiwisolver-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22ccba48abae827a0f952a78a7b1a7ff01866131e5bbe1f826ce9bda406bf051"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:af24b21c2283ca69c416a8a42cde9764dc36c63d3389645d28c69b0e93db3cd7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:547111ef7cf13d73546c2de97ce434935626c897bdec96a578ca100b5fcd694b"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f85adfebd7d3c3db649efdf73659e1677a2cf3fa6e2556a3f373578af14bf7"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ffd7cf165ff71afb202b3f36daafbf298932bee325aac9f58e1c9cd55838bef0"}, + {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b3136eecf7e1b4a4d23e4b19d6c4e7a8e0b42d55f30444e3c529700cdacaa0d"}, + {file = "kiwisolver-1.4.3-cp39-cp39-win32.whl", hash = "sha256:46c6e5018ba31d5ee7582f323d8661498a154dea1117486a571db4c244531f24"}, + {file = "kiwisolver-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:8395064d63b26947fa2c9faeea9c3eee35e52148c5339c37987e1d96fbf009b3"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:325fa1b15098e44fe4590a6c5c09a212ca10c6ebb5d96f7447d675f6c8340e4e"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:654280c5f41831ddcc5a331c0e3ce2e480bbc3d7c93c18ecf6236313aae2d61a"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae7aa0784aeadfbd693c27993727792fbe1455b84d49970bad5886b42976b18"}, + {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:130c6c35eded399d3967cf8a542c20b671f5ba85bd6f210f8b939f868360e9eb"}, + {file = "kiwisolver-1.4.3.tar.gz", hash = "sha256:ab8a15c2750ae8d53e31f77a94f846d0a00772240f1c12817411fa2344351f86"}, +] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, + {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, +] +loguru = [ + {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, + {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, +] +lorem-text = [ + {file = "lorem_text-2.1-py2.py3-none-any.whl", hash = "sha256:b512779addd08dcc221460ce428f7911b198f66c5763410f3de6d788eb62ceb3"}, + {file = "lorem_text-2.1.tar.gz", hash = "sha256:b984b5570295084012f5a9385672bab3470965c943b73d8d71a6efcd7a62b5c3"}, +] +mako = [ + {file = "Mako-1.2.0-py3-none-any.whl", hash = "sha256:23aab11fdbbb0f1051b93793a58323ff937e98e34aece1c4219675122e57e4ba"}, + {file = "Mako-1.2.0.tar.gz", hash = "sha256:9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39"}, +] +mando = [ + {file = "mando-0.6.4-py2.py3-none-any.whl", hash = "sha256:4ce09faec7e5192ffc3c57830e26acba0fd6cd11e1ee81af0d4df0657463bd1c"}, + {file = "mando-0.6.4.tar.gz", hash = "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960"}, +] +markupsafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] +marshmallow = [ + {file = "marshmallow-3.16.0-py3-none-any.whl", hash = "sha256:53a1e0ee69f79e1f3e80d17393b25cfc917eda52f859e8183b4af72c3390c1f1"}, + {file = "marshmallow-3.16.0.tar.gz", hash = "sha256:a762c1d8b2bcb0e5c8e964850d03f9f3bffd6a12b626f3c14b9d6b1841999af5"}, +] +marshmallow-enum = [ + {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, + {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, +] +matplotlib = [ + {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:03bbb3f5f78836855e127b5dab228d99551ad0642918ccbf3067fcd52ac7ac5e"}, + {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49a5938ed6ef9dda560f26ea930a2baae11ea99e1c2080c8714341ecfda72a89"}, + {file = "matplotlib-3.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:77157be0fc4469cbfb901270c205e7d8adb3607af23cef8bd11419600647ceed"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5844cea45d804174bf0fac219b4ab50774e504bef477fc10f8f730ce2d623441"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c87973ddec10812bddc6c286b88fdd654a666080fbe846a1f7a3b4ba7b11ab78"}, + {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a05f2b37222319753a5d43c0a4fd97ed4ff15ab502113e3f2625c26728040cf"}, + {file = "matplotlib-3.5.2-cp310-cp310-win32.whl", hash = "sha256:9776e1a10636ee5f06ca8efe0122c6de57ffe7e8c843e0fb6e001e9d9256ec95"}, + {file = "matplotlib-3.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:b4fedaa5a9aa9ce14001541812849ed1713112651295fdddd640ea6620e6cf98"}, + {file = "matplotlib-3.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ee175a571e692fc8ae8e41ac353c0e07259113f4cb063b0ec769eff9717e84bb"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e8bda1088b941ead50caabd682601bece983cadb2283cafff56e8fcddbf7d7f"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9480842d5aadb6e754f0b8f4ebeb73065ac8be1855baa93cd082e46e770591e9"}, + {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c623b355d605a81c661546af7f24414165a8a2022cddbe7380a31a4170fa2e9"}, + {file = "matplotlib-3.5.2-cp37-cp37m-win32.whl", hash = "sha256:a91426ae910819383d337ba0dc7971c7cefdaa38599868476d94389a329e599b"}, + {file = "matplotlib-3.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c4b82c2ae6d305fcbeb0eb9c93df2602ebd2f174f6e8c8a5d92f9445baa0c1d3"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ebc27ad11df3c1661f4677a7762e57a8a91dd41b466c3605e90717c9a5f90c82"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a32ea6e12e80dedaca2d4795d9ed40f97bfa56e6011e14f31502fdd528b9c89"}, + {file = "matplotlib-3.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a0967d4156adbd0d46db06bc1a877f0370bce28d10206a5071f9ecd6dc60b79"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2b696699386766ef171a259d72b203a3c75d99d03ec383b97fc2054f52e15cf"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f409716119fa39b03da3d9602bd9b41142fab7a0568758cd136cd80b1bf36c8"}, + {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b8d3f4e71e26307e8c120b72c16671d70c5cd08ae412355c11254aa8254fb87f"}, + {file = "matplotlib-3.5.2-cp38-cp38-win32.whl", hash = "sha256:b6c63cd01cad0ea8704f1fd586e9dc5777ccedcd42f63cbbaa3eae8dd41172a1"}, + {file = "matplotlib-3.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:75c406c527a3aa07638689586343f4b344fcc7ab1f79c396699eb550cd2b91f7"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4a44cdfdb9d1b2f18b1e7d315eb3843abb097869cd1ef89cfce6a488cd1b5182"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d8e129af95b156b41cb3be0d9a7512cc6d73e2b2109f82108f566dbabdbf377"}, + {file = "matplotlib-3.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:364e6bca34edc10a96aa3b1d7cd76eb2eea19a4097198c1b19e89bee47ed5781"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea75df8e567743207e2b479ba3d8843537be1c146d4b1e3e395319a4e1a77fe9"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44c6436868186564450df8fd2fc20ed9daaef5caad699aa04069e87099f9b5a8"}, + {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d7705022df2c42bb02937a2a824f4ec3cca915700dd80dc23916af47ff05f1a"}, + {file = "matplotlib-3.5.2-cp39-cp39-win32.whl", hash = "sha256:ee0b8e586ac07f83bb2950717e66cb305e2859baf6f00a9c39cc576e0ce9629c"}, + {file = "matplotlib-3.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c772264631e5ae61f0bd41313bbe48e1b9bcc95b974033e1118c9caa1a84d5c6"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:751d3815b555dcd6187ad35b21736dc12ce6925fc3fa363bbc6dc0f86f16484f"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:31fbc2af27ebb820763f077ec7adc79b5a031c2f3f7af446bd7909674cd59460"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fa28ca76ac5c2b2d54bc058b3dad8e22ee85d26d1ee1b116a6fd4d2277b6a04"}, + {file = "matplotlib-3.5.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:24173c23d1bcbaed5bf47b8785d27933a1ac26a5d772200a0f3e0e38f471b001"}, + {file = "matplotlib-3.5.2.tar.gz", hash = "sha256:48cf850ce14fa18067f2d9e0d646763681948487a8080ec0af2686468b4607a2"}, +] +mccabe = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] +mongoengine = [ + {file = "mongoengine-0.24.1-py3-none-any.whl", hash = "sha256:68878b65bcb3751debcba4342180a180161cdb5f46525027e622ad081dd44fac"}, + {file = "mongoengine-0.24.1.tar.gz", hash = "sha256:01baac85f408f5eefb6195c0afeae631e7fc6fab5cb221a7b46646f94227d6da"}, +] +motor = [ + {file = "motor-2.5.1-py3-none-any.whl", hash = "sha256:961fdceacaae2c7236c939166f66415be81be8bbb762da528386738de3a0f509"}, + {file = "motor-2.5.1.tar.gz", hash = "sha256:663473f4498f955d35db7b6f25651cb165514c247136f368b84419cb7635f6b8"}, +] +multidict = [ + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, + {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, + {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, + {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, + {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, + {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, + {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, + {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, + {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, + {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, + {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, +] +mypy = [ + {file = "mypy-0.950-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cf9c261958a769a3bd38c3e133801ebcd284ffb734ea12d01457cb09eacf7d7b"}, + {file = "mypy-0.950-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b5bd0ffb11b4aba2bb6d31b8643902c48f990cc92fda4e21afac658044f0c0"}, + {file = "mypy-0.950-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e7647df0f8fc947388e6251d728189cfadb3b1e558407f93254e35abc026e22"}, + {file = "mypy-0.950-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eaff8156016487c1af5ffa5304c3e3fd183edcb412f3e9c72db349faf3f6e0eb"}, + {file = "mypy-0.950-cp310-cp310-win_amd64.whl", hash = "sha256:563514c7dc504698fb66bb1cf897657a173a496406f1866afae73ab5b3cdb334"}, + {file = "mypy-0.950-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dd4d670eee9610bf61c25c940e9ade2d0ed05eb44227275cce88701fee014b1f"}, + {file = "mypy-0.950-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca75ecf2783395ca3016a5e455cb322ba26b6d33b4b413fcdedfc632e67941dc"}, + {file = "mypy-0.950-cp36-cp36m-win_amd64.whl", hash = "sha256:6003de687c13196e8a1243a5e4bcce617d79b88f83ee6625437e335d89dfebe2"}, + {file = "mypy-0.950-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4c653e4846f287051599ed8f4b3c044b80e540e88feec76b11044ddc5612ffed"}, + {file = "mypy-0.950-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e19736af56947addedce4674c0971e5dceef1b5ec7d667fe86bcd2b07f8f9075"}, + {file = "mypy-0.950-cp37-cp37m-win_amd64.whl", hash = "sha256:ef7beb2a3582eb7a9f37beaf38a28acfd801988cde688760aea9e6cc4832b10b"}, + {file = "mypy-0.950-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0112752a6ff07230f9ec2f71b0d3d4e088a910fdce454fdb6553e83ed0eced7d"}, + {file = "mypy-0.950-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee0a36edd332ed2c5208565ae6e3a7afc0eabb53f5327e281f2ef03a6bc7687a"}, + {file = "mypy-0.950-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77423570c04aca807508a492037abbd72b12a1fb25a385847d191cd50b2c9605"}, + {file = "mypy-0.950-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ce6a09042b6da16d773d2110e44f169683d8cc8687e79ec6d1181a72cb028d2"}, + {file = "mypy-0.950-cp38-cp38-win_amd64.whl", hash = "sha256:5b231afd6a6e951381b9ef09a1223b1feabe13625388db48a8690f8daa9b71ff"}, + {file = "mypy-0.950-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0384d9f3af49837baa92f559d3fa673e6d2652a16550a9ee07fc08c736f5e6f8"}, + {file = "mypy-0.950-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1fdeb0a0f64f2a874a4c1f5271f06e40e1e9779bf55f9567f149466fc7a55038"}, + {file = "mypy-0.950-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:61504b9a5ae166ba5ecfed9e93357fd51aa693d3d434b582a925338a2ff57fd2"}, + {file = "mypy-0.950-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a952b8bc0ae278fc6316e6384f67bb9a396eb30aced6ad034d3a76120ebcc519"}, + {file = "mypy-0.950-cp39-cp39-win_amd64.whl", hash = "sha256:eaea21d150fb26d7b4856766e7addcf929119dd19fc832b22e71d942835201ef"}, + {file = "mypy-0.950-py3-none-any.whl", hash = "sha256:a4d9898f46446bfb6405383b57b96737dcfd0a7f25b748e78ef3e8c576bba3cb"}, + {file = "mypy-0.950.tar.gz", hash = "sha256:1b333cfbca1762ff15808a0ef4f71b5d3eed8528b23ea1c3fb50543c867d68de"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +nodeenv = [ + {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, + {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, +] +numpy = [ + {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, + {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, + {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, + {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, + {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, + {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, + {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, + {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, + {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pandas = [ + {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be67c782c4f1b1f24c2f16a157e12c2693fd510f8df18e3287c77f33d124ed07"}, + {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5a206afa84ed20e07603f50d22b5f0db3fb556486d8c2462d8bc364831a4b417"}, + {file = "pandas-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0010771bd9223f7afe5f051eb47c4a49534345dfa144f2f5470b27189a4dd3b5"}, + {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3228198333dd13c90b6434ddf61aa6d57deaca98cf7b654f4ad68a2db84f8cfe"}, + {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b79af3a69e5175c6fa7b4e046b21a646c8b74e92c6581a9d825687d92071b51"}, + {file = "pandas-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:5586cc95692564b441f4747c47c8a9746792e87b40a4680a2feb7794defb1ce3"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:061609334a8182ab500a90fe66d46f6f387de62d3a9cb9aa7e62e3146c712167"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b8134651258bce418cb79c71adeff0a44090c98d955f6953168ba16cc285d9f7"}, + {file = "pandas-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df82739e00bb6daf4bba4479a40f38c718b598a84654cbd8bb498fd6b0aa8c16"}, + {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:385c52e85aaa8ea6a4c600a9b2821181a51f8be0aee3af6f2dcb41dafc4fc1d0"}, + {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295872bf1a09758aba199992c3ecde455f01caf32266d50abc1a073e828a7b9d"}, + {file = "pandas-1.4.2-cp38-cp38-win32.whl", hash = "sha256:95c1e422ced0199cf4a34385ff124b69412c4bc912011ce895582bee620dfcaa"}, + {file = "pandas-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:5c54ea4ef3823108cd4ec7fb27ccba4c3a775e0f83e39c5e17f5094cb17748bc"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c072c7f06b9242c855ed8021ff970c0e8f8b10b35e2640c657d2a541c5950f59"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f549097993744ff8c41b5e8f2f0d3cbfaabe89b4ae32c8c08ead6cc535b80139"}, + {file = "pandas-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff08a14ef21d94cdf18eef7c569d66f2e24e0bc89350bcd7d243dd804e3b5eb2"}, + {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c5bf555b6b0075294b73965adaafb39cf71c312e38c5935c93d78f41c19828a"}, + {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51649ef604a945f781105a6d2ecf88db7da0f4868ac5d45c51cb66081c4d9c73"}, + {file = "pandas-1.4.2-cp39-cp39-win32.whl", hash = "sha256:d0d4f13e4be7ce89d7057a786023c461dd9370040bdb5efa0a7fe76b556867a0"}, + {file = "pandas-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:09d8be7dd9e1c4c98224c4dfe8abd60d145d934e9fc1f5f411266308ae683e6a"}, + {file = "pandas-1.4.2.tar.gz", hash = "sha256:92bc1fc585f1463ca827b45535957815b7deb218c549b7c18402c322c7549a12"}, +] +paramiko = [ + {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, + {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, +] +peewee = [ + {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, +] +pendulum = [ + {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, + {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, + {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, + {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, + {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, + {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, + {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, + {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, + {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, + {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, + {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, +] +pillow = [ + {file = "Pillow-9.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:42dfefbef90eb67c10c45a73a9bc1599d4dac920f7dfcbf4ec6b80cb620757fe"}, + {file = "Pillow-9.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffde4c6fabb52891d81606411cbfaf77756e3b561b566efd270b3ed3791fde4e"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c857532c719fb30fafabd2371ce9b7031812ff3889d75273827633bca0c4602"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59789a7d06c742e9d13b883d5e3569188c16acb02eeed2510fd3bfdbc1bd1530"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d45dbe4b21a9679c3e8b3f7f4f42a45a7d3ddff8a4a16109dff0e1da30a35b2"}, + {file = "Pillow-9.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9ed59d1b6ee837f4515b9584f3d26cf0388b742a11ecdae0d9237a94505d03a"}, + {file = "Pillow-9.1.1-cp310-cp310-win32.whl", hash = "sha256:b3fe2ff1e1715d4475d7e2c3e8dabd7c025f4410f79513b4ff2de3d51ce0fa9c"}, + {file = "Pillow-9.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5b650dbbc0969a4e226d98a0b440c2f07a850896aed9266b6fedc0f7e7834108"}, + {file = "Pillow-9.1.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:0b4d5ad2cd3a1f0d1df882d926b37dbb2ab6c823ae21d041b46910c8f8cd844b"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9370d6744d379f2de5d7fa95cdbd3a4d92f0b0ef29609b4b1687f16bc197063d"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b761727ed7d593e49671d1827044b942dd2f4caae6e51bab144d4accf8244a84"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a66fe50386162df2da701b3722781cbe90ce043e7d53c1fd6bd801bca6b48d4"}, + {file = "Pillow-9.1.1-cp37-cp37m-win32.whl", hash = "sha256:2b291cab8a888658d72b575a03e340509b6b050b62db1f5539dd5cd18fd50578"}, + {file = "Pillow-9.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d4331aeb12f6b3791911a6da82de72257a99ad99726ed6b63f481c0184b6fb9"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8844217cdf66eabe39567118f229e275f0727e9195635a15e0e4b9227458daaf"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b6617221ff08fbd3b7a811950b5c3f9367f6e941b86259843eab77c8e3d2b56b"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20d514c989fa28e73a5adbddd7a171afa5824710d0ab06d4e1234195d2a2e546"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088df396b047477dd1bbc7de6e22f58400dae2f21310d9e2ec2933b2ef7dfa4f"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53c27bd452e0f1bc4bfed07ceb235663a1df7c74df08e37fd6b03eb89454946a"}, + {file = "Pillow-9.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3f6c1716c473ebd1649663bf3b42702d0d53e27af8b64642be0dd3598c761fb1"}, + {file = "Pillow-9.1.1-cp38-cp38-win32.whl", hash = "sha256:c67db410508b9de9c4694c57ed754b65a460e4812126e87f5052ecf23a011a54"}, + {file = "Pillow-9.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f054b020c4d7e9786ae0404278ea318768eb123403b18453e28e47cdb7a0a4bf"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c17770a62a71718a74b7548098a74cd6880be16bcfff5f937f900ead90ca8e92"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3f6a6034140e9e17e9abc175fc7a266a6e63652028e157750bd98e804a8ed9a"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f372d0f08eff1475ef426344efe42493f71f377ec52237bf153c5713de987251"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09e67ef6e430f90caa093528bd758b0616f8165e57ed8d8ce014ae32df6a831d"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66daa16952d5bf0c9d5389c5e9df562922a59bd16d77e2a276e575d32e38afd1"}, + {file = "Pillow-9.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d78ca526a559fb84faaaf84da2dd4addef5edb109db8b81677c0bb1aad342601"}, + {file = "Pillow-9.1.1-cp39-cp39-win32.whl", hash = "sha256:55e74faf8359ddda43fee01bffbc5bd99d96ea508d8a08c527099e84eb708f45"}, + {file = "Pillow-9.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c150dbbb4a94ea4825d1e5f2c5501af7141ea95825fadd7829f9b11c97aaf6c"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:769a7f131a2f43752455cc72f9f7a093c3ff3856bf976c5fb53a59d0ccc704f6"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:488f3383cf5159907d48d32957ac6f9ea85ccdcc296c14eca1a4e396ecc32098"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b525a356680022b0af53385944026d3486fc8c013638cf9900eb87c866afb4c"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6e760cf01259a1c0a50f3c845f9cad1af30577fd8b670339b1659c6d0e7a41dd"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4165205a13b16a29e1ac57efeee6be2dfd5b5408122d59ef2145bc3239fa340"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937a54e5694684f74dcbf6e24cc453bfc5b33940216ddd8f4cd8f0f79167f765"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8"}, + {file = "Pillow-9.1.1.tar.gz", hash = "sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0"}, +] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +pre-commit = [ + {file = "pre_commit-2.19.0-py2.py3-none-any.whl", hash = "sha256:10c62741aa5704faea2ad69cb550ca78082efe5697d6f04e5710c3c229afdd10"}, + {file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"}, +] +psutil = [ + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +py-cpuinfo = [ + {file = "py-cpuinfo-8.0.0.tar.gz", hash = "sha256:5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pydantic = [ + {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, + {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, + {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, + {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, + {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, + {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, + {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, + {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, + {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, + {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, +] +pygments = [ + {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, + {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, +] +pylint = [ + {file = "pylint-2.14.1-py3-none-any.whl", hash = "sha256:bb71e6d169506de585edea997e48d9ff20c0dc0e2fbc1d166bad6b640120326b"}, + {file = "pylint-2.14.1.tar.gz", hash = "sha256:549261e0762c3466cc001024c4419c08252cb8c8d40f5c2c6966fea690e7fe2a"}, +] +pymongo = [ + {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, + {file = "pymongo-3.12.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:a055d29f1302892a9389a382bed10a3f77708bcf3e49bfb76f7712fa5f391cc6"}, + {file = "pymongo-3.12.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:8c7ad5cab282f53b9d78d51504330d1c88c83fbe187e472c07e6908a0293142e"}, + {file = "pymongo-3.12.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a766157b195a897c64945d4ff87b050bb0e763bb78f3964e996378621c703b00"}, + {file = "pymongo-3.12.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c8d6bf6fcd42cde2f02efb8126812a010c297eacefcd090a609639d2aeda6185"}, + {file = "pymongo-3.12.3-cp27-cp27m-win32.whl", hash = "sha256:5fdffb0cfeb4dc8646a5381d32ec981ae8472f29c695bf09e8f7a8edb2db12ca"}, + {file = "pymongo-3.12.3-cp27-cp27m-win_amd64.whl", hash = "sha256:648fcfd8e019b122b7be0e26830a3a2224d57c3e934f19c1e53a77b8380e6675"}, + {file = "pymongo-3.12.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:3f0ac6e0203bd88863649e6ed9c7cfe53afab304bc8225f2597c4c0a74e4d1f0"}, + {file = "pymongo-3.12.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:71c0db2c313ea8a80825fb61b7826b8015874aec29ee6364ade5cb774fe4511b"}, + {file = "pymongo-3.12.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b779e87300635b8075e8d5cfd4fdf7f46078cd7610c381d956bca5556bb8f97"}, + {file = "pymongo-3.12.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:351a2efe1c9566c348ad0076f4bf541f4905a0ebe2d271f112f60852575f3c16"}, + {file = "pymongo-3.12.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a02313e71b7c370c43056f6b16c45effbb2d29a44d24403a3d5ba6ed322fa3f"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux1_i686.whl", hash = "sha256:d3082e5c4d7b388792124f5e805b469109e58f1ab1eb1fbd8b998e8ab766ffb7"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:514e78d20d8382d5b97f32b20c83d1d0452c302c9a135f0a9022236eb9940fda"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_i686.whl", hash = "sha256:b1b5be40ebf52c3c67ee547e2c4435ed5bc6352f38d23e394520b686641a6be4"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:58db209da08a502ce6948841d522dcec80921d714024354153d00b054571993c"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_s390x.whl", hash = "sha256:5296e5e69243ffd76bd919854c4da6630ae52e46175c804bc4c0e050d937b705"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:51d1d061df3995c2332ae78f036492cc188cb3da8ef122caeab3631a67bb477e"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:463b974b7f49d65a16ca1435bc1c25a681bb7d630509dd23b2e819ed36da0b7f"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e099b79ccf7c40f18b149a64d3d10639980035f9ceb223169dd806ff1bb0d9cc"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27e5ea64332385385b75414888ce9d1a9806be8616d7cef4ef409f4f256c6d06"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed7d11330e443aeecab23866055e08a5a536c95d2c25333aeb441af2dbac38d2"}, + {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93111fd4e08fa889c126aa8baf5c009a941880a539c87672e04583286517450a"}, + {file = "pymongo-3.12.3-cp310-cp310-win32.whl", hash = "sha256:2301051701b27aff2cbdf83fae22b7ca883c9563dfd088033267291b46196643"}, + {file = "pymongo-3.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:c7e8221278e5f9e2b6d3893cfc3a3e46c017161a57bb0e6f244826e4cee97916"}, + {file = "pymongo-3.12.3-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:7b4a9fcd95e978cd3c96cdc2096aa54705266551422cf0883c12a4044def31c6"}, + {file = "pymongo-3.12.3-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:06b64cdf5121f86b78a84e61b8f899b6988732a8d304b503ea1f94a676221c06"}, + {file = "pymongo-3.12.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:c8f7dd025cb0bf19e2f60a64dfc24b513c8330e0cfe4a34ccf941eafd6194d9e"}, + {file = "pymongo-3.12.3-cp34-cp34m-win32.whl", hash = "sha256:ab23b0545ec71ea346bf50a5d376d674f56205b729980eaa62cdb7871805014b"}, + {file = "pymongo-3.12.3-cp34-cp34m-win_amd64.whl", hash = "sha256:1b5cb75d2642ff7db823f509641f143f752c0d1ab03166cafea1e42e50469834"}, + {file = "pymongo-3.12.3-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:fc2048d13ff427605fea328cbe5369dce549b8c7657b0e22051a5b8831170af6"}, + {file = "pymongo-3.12.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c5f83bb59d0ff60c6fdb1f8a7b0288fbc4640b1f0fd56f5ae2387749c35d34e3"}, + {file = "pymongo-3.12.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6632b1c63d58cddc72f43ab9f17267354ddce563dd5e11eadabd222dcc808808"}, + {file = "pymongo-3.12.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fedad05147b40ff8a93fcd016c421e6c159f149a2a481cfa0b94bfa3e473bab"}, + {file = "pymongo-3.12.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:208a61db8b8b647fb5b1ff3b52b4ed6dbced01eac3b61009958adb203596ee99"}, + {file = "pymongo-3.12.3-cp35-cp35m-win32.whl", hash = "sha256:3100a2352bdded6232b385ceda0c0a4624598c517d52c2d8cf014b7abbebd84d"}, + {file = "pymongo-3.12.3-cp35-cp35m-win_amd64.whl", hash = "sha256:3492ae1f97209c66af70e863e6420e6301cecb0a51a5efa701058aa73a8ca29e"}, + {file = "pymongo-3.12.3-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:87e18f29bac4a6be76a30e74de9c9005475e27100acf0830679420ce1fd9a6fd"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b3e08aef4ea05afbc0a70cd23c13684e7f5e074f02450964ec5cfa1c759d33d2"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e66b3c9f8b89d4fd58a59c04fdbf10602a17c914fbaaa5e6ea593f1d54b06362"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5d67dbc8da2dac1644d71c1839d12d12aa333e266a9964d5b1a49feed036bc94"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:a351986d6c9006308f163c359ced40f80b6cffb42069f3e569b979829951038d"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:5296669bff390135528001b4e48d33a7acaffcd361d98659628ece7f282f11aa"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:9d5b66d457d2c5739c184a777455c8fde7ab3600a56d8bbebecf64f7c55169e1"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:1c771f1a8b3cd2d697baaf57e9cfa4ae42371cacfbea42ea01d9577c06d92f96"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81a3ebc33b1367f301d1c8eda57eec4868e951504986d5d3fe437479dcdac5b2"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cf113a46d81cff0559d57aa66ffa473d57d1a9496f97426318b6b5b14fdec1c"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64b9122be1c404ce4eb367ad609b590394587a676d84bfed8e03c3ce76d70560"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6c71e198b36f0f0dfe354f06d3655ecfa30d69493a1da125a9a54668aad652"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33ab8c031f788609924e329003088831045f683931932a52a361d4a955b7dce2"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2b4c95c47fb81b19ea77dc1c50d23af3eba87c9628fcc2e03d44124a3d336ea"}, + {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4e0a3ea7fd01cf0a36509f320226bd8491e0f448f00b8cb89f601c109f6874e1"}, + {file = "pymongo-3.12.3-cp36-cp36m-win32.whl", hash = "sha256:dfec57f15f53d677b8e4535695ff3f37df7f8fe431f2efa8c3c8c4025b53d1eb"}, + {file = "pymongo-3.12.3-cp36-cp36m-win_amd64.whl", hash = "sha256:c22591cff80188dd8543be0b559d0c807f7288bd353dc0bcfe539b4588b3a5cd"}, + {file = "pymongo-3.12.3-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:7738147cd9dbd6d18d5593b3491b4620e13b61de975fd737283e4ad6c255c273"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:be1f10145f7ea76e3e836fdc5c8429c605675bdcddb0bca9725ee6e26874c00c"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:295a5beaecb7bf054c1c6a28749ed72b19f4d4b61edcd8a0815d892424baf780"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:320f8734553c50cffe8a8e1ae36dfc7d7be1941c047489db20a814d2a170d7b5"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:5d20072d81cbfdd8e15e6a0c91fc7e3a4948c71e0adebfc67d3b4bcbe8602711"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:2c46a0afef69d61938a6fe32c3afd75b91dec3ab3056085dc72abbeedcc94166"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:5f530f35e1a57d4360eddcbed6945aecdaee2a491cd3f17025e7b5f2eea88ee7"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:6526933760ee1e6090db808f1690a111ec409699c1990efc96f134d26925c37f"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95d15cf81cd2fb926f2a6151a9f94c7aacc102b415e72bc0e040e29332b6731c"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d52a70350ec3dfc39b513df12b03b7f4c8f8ec6873bbf958299999db7b05eb1"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9252c991e8176b5a2fa574c5ab9a841679e315f6e576eb7cf0bd958f3e39b0ad"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:145d78c345a38011497e55aff22c0f8edd40ee676a6810f7e69563d68a125e83"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8e0a086dbbee406cc6f603931dfe54d1cb2fba585758e06a2de01037784b737"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6d5443104f89a840250087863c91484a72f254574848e951d1bdd7d8b2ce7c9"}, + {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6f93dbfa5a461107bc3f5026e0d5180499e13379e9404f07a9f79eb5e9e1303d"}, + {file = "pymongo-3.12.3-cp37-cp37m-win32.whl", hash = "sha256:c9d212e2af72d5c8d082775a43eb726520e95bf1c84826440f74225843975136"}, + {file = "pymongo-3.12.3-cp37-cp37m-win_amd64.whl", hash = "sha256:320a1fe403dd83a35709fcf01083d14bc1462e9789b711201349a9158db3a87e"}, + {file = "pymongo-3.12.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a1ba93be779a9b8e5e44f5c133dc1db4313661cead8a2fd27661e6cb8d942ee9"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4294f2c1cd069b793e31c2e6d7ac44b121cf7cedccd03ebcc30f3fc3417b314a"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:845b178bd127bb074835d2eac635b980c58ec5e700ebadc8355062df708d5a71"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:176fdca18391e1206c32fb1d8265628a84d28333c20ad19468d91e3e98312cd1"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:28bfd5244d32faf3e49b5a8d1fab0631e922c26e8add089312e4be19fb05af50"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:f38b35ecd2628bf0267761ed659e48af7e620a7fcccfccf5774e7308fb18325c"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:cebb3d8bcac4a6b48be65ebbc5c9881ed4a738e27bb96c86d9d7580a1fb09e05"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:80710d7591d579442c67a3bc7ae9dcba9ff95ea8414ac98001198d894fc4ff46"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d7baa847383b9814de640c6f1a8553d125ec65e2761ad146ea2e75a7ad197c"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:602284e652bb56ca8760f8e88a5280636c5b63d7946fca1c2fe0f83c37dffc64"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2d763d05ec7211313a06e8571236017d3e61d5fef97fcf34ec4b36c0b6556"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a6e4dccae8ef5dd76052647d78f02d5d0ffaff1856277d951666c54aeba3ad2"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1fc4d3985868860b6585376e511bb32403c5ffb58b0ed913496c27fd791deea"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4e5d163e6644c2bc84dd9f67bfa89288c23af26983d08fefcc2cbc22f6e57e6"}, + {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8d92c6bb9174d47c2257528f64645a00bbc6324a9ff45a626192797aff01dc14"}, + {file = "pymongo-3.12.3-cp38-cp38-win32.whl", hash = "sha256:b0db9a4691074c347f5d7ee830ab3529bc5ad860939de21c1f9c403daf1eda9a"}, + {file = "pymongo-3.12.3-cp38-cp38-win_amd64.whl", hash = "sha256:d81047341ab56061aa4b6823c54d4632579c3b16e675089e8f520e9b918a133b"}, + {file = "pymongo-3.12.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07398d8a03545b98282f459f2603a6bb271f4448d484ed7f411121a519a7ea48"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b7df0d99e189b7027d417d4bfd9b8c53c9c7ed5a0a1495d26a6f547d820eca88"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a283425e6a474facd73072d8968812d1d9058490a5781e022ccf8895500b83ce"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2577b8161eeae4dd376d13100b2137d883c10bb457dd08935f60c9f9d4b5c5f6"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:517b09b1dd842390a965a896d1327c55dfe78199c9f5840595d40facbcd81854"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:2567885ff0c8c7c0887ba6cefe4ae4af96364a66a7069f924ce0cd12eb971d04"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:71c5c200fd37a5322706080b09c3ec8907cf01c377a7187f354fc9e9e13abc73"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:14dee106a10b77224bba5efeeb6aee025aabe88eb87a2b850c46d3ee55bdab4a"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f340a2a908644ea6cccd399be0fb308c66e05d2800107345f9f0f0d59e1731c4"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b4c535f524c9d8c86c3afd71d199025daa070859a2bdaf94a298120b0de16db"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8455176fd1b86de97d859fed4ae0ef867bf998581f584c7a1a591246dfec330f"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf254a1a95e95fdf4eaa25faa1ea450a6533ed7a997f9f8e49ab971b61ea514d"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a3540e21213cb8ce232e68a7d0ee49cdd35194856c50b8bd87eeb572fadd42"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0e7a5d0b9077e8c3e57727f797ee8adf12e1d5e7534642230d98980d160d1320"}, + {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0be605bfb8461384a4cb81e80f51eb5ca1b89851f2d0e69a75458c788a7263a4"}, + {file = "pymongo-3.12.3-cp39-cp39-win32.whl", hash = "sha256:2157d68f85c28688e8b723bbe70c8013e0aba5570e08c48b3562f74d33fc05c4"}, + {file = "pymongo-3.12.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfa217bf8cf3ff6b30c8e6a89014e0c0e7b50941af787b970060ae5ba04a4ce5"}, + {file = "pymongo-3.12.3-py2.7-macosx-10.14-intel.egg", hash = "sha256:d81299f63dc33cc172c26faf59cc54dd795fc6dd5821a7676cca112a5ee8bbd6"}, + {file = "pymongo-3.12.3.tar.gz", hash = "sha256:0a89cadc0062a5e53664dde043f6c097172b8c1c5f0094490095282ff9995a5f"}, +] +pynacl = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] +pynvml = [ + {file = "pynvml-11.4.1-py3-none-any.whl", hash = "sha256:d27be542cd9d06558de18e2deffc8022ccd7355bc7382255d477038e7e424c6c"}, + {file = "pynvml-11.4.1.tar.gz", hash = "sha256:b2e4a33b80569d093b513f5804db0c7f40cfc86f15a013ae7a8e99c5e175d5dd"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pytest = [ + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.18.3.tar.gz", hash = "sha256:7659bdb0a9eb9c6e3ef992eef11a2b3e69697800ad02fb06374a210d85b29f91"}, + {file = "pytest_asyncio-0.18.3-1-py3-none-any.whl", hash = "sha256:16cf40bdf2b4fb7fc8e4b82bd05ce3fbcd454cbf7b92afc445fe299dabb88213"}, + {file = "pytest_asyncio-0.18.3-py3-none-any.whl", hash = "sha256:8fafa6c52161addfd41ee7ab35f11836c5a16ec208f93ee388f752bea3493a84"}, +] +pytest-benchmark = [ + {file = "pytest-benchmark-3.4.1.tar.gz", hash = "sha256:40e263f912de5a81d891619032983557d62a3d85843f9a9f30b98baea0cd7b47"}, + {file = "pytest_benchmark-3.4.1-py2.py3-none-any.whl", hash = "sha256:36d2b08c4882f6f997fd3126a3d6dfd70f3249cde178ed8bbc0b73db7c20f809"}, +] +pytest-cov = [ + {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, + {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +python-dotenv = [ + {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, + {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, +] +pytz = [ + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, +] +pytzdata = [ + {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, + {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, +] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] +radon = [ + {file = "radon-5.1.0-py2.py3-none-any.whl", hash = "sha256:fa74e018197f1fcb54578af0f675d8b8e2342bd8e0b72bef8197bc4c9e645f36"}, + {file = "radon-5.1.0.tar.gz", hash = "sha256:cb1d8752e5f862fb9e20d82b5f758cbc4fb1237c92c9a66450ea0ea7bf29aeee"}, +] +requests = [ + {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, + {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, +] +rich = [ + {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, + {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"}, +] +scalene = [ + {file = "scalene-1.5.8-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:87db62d0639386e7b751021a5b63b3143ac11d31dbe130830ce27a744e54dadc"}, + {file = "scalene-1.5.8-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:82ad12cc7859b1e87eff1d840fbc7eb7b566b5285ce7f7c7b10b466492947dc0"}, + {file = "scalene-1.5.8-cp310-cp310-win_amd64.whl", hash = "sha256:73be9cd295d62f3e7b7da17b78d2080fbb376fbc74e1399e2f02a33421fba6d7"}, + {file = "scalene-1.5.8-cp37-cp37m-macosx_10_14_universal2.whl", hash = "sha256:9b9048db3500e5606d026c74d7b834f6f67a58d718bf494897f75321c6bcbe49"}, + {file = "scalene-1.5.8-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:532c4afc3339a1da156a322d17e5059fa02321ea54bff2ebc1fe86a3946dbcf1"}, + {file = "scalene-1.5.8-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:c102a802f0d9a0810efab1ad73ce1bae4acb4004ae94cb6220cb88073e39b22f"}, + {file = "scalene-1.5.8-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:e9bd38973d3269357c73b052454b7e803f152eb92e5f100681aaf0bf9f69ebf1"}, + {file = "scalene-1.5.8-cp38-cp38-win_amd64.whl", hash = "sha256:a72d4d239e5efd847b57075e25e3c3c727b120a28cdb84ff47038273e8d5eab2"}, + {file = "scalene-1.5.8-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:a46a41c750003c6c3f5c94e7ac1d276a35d30103f3b669d3b08660f5cd217041"}, + {file = "scalene-1.5.8-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:b6975f289311c19c27adf20f91be3f47904c93886f9ea9be308028f1d2ddca09"}, + {file = "scalene-1.5.8-cp39-cp39-win_amd64.whl", hash = "sha256:26a25311d9786cbf31fc3f17b2a33a77f9dce62089dcd8fd420bb0e268971d2a"}, + {file = "scalene-1.5.8.tar.gz", hash = "sha256:1f961241702c87ce6749befe53873ffe2a215c4c264b72b59128e50fa1a8fc87"}, +] +scipy = [ + {file = "scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4"}, + {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4"}, + {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125"}, + {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba"}, + {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d"}, + {file = "scipy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621"}, + {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14"}, + {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca"}, + {file = "scipy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462"}, + {file = "scipy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6"}, + {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb"}, + {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6"}, + {file = "scipy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434"}, + {file = "scipy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f"}, + {file = "scipy-1.8.1.tar.gz", hash = "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33"}, +] +seaborn = [ + {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, + {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, +] +setuptools-scm = [ + {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, + {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, +] +shapely = [ + {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c9e3400b716c51ba43eea1678c28272580114e009b6c78cdd00c44df3e325fa"}, + {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce0b5c5f7acbccf98b3460eecaa40e9b18272b2a734f74fcddf1d7696e047e95"}, + {file = "Shapely-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a40bf497b57a6625b83996aed10ce2233bca0e5471b8af771b186d681433ac5"}, + {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6bdc7728f1e5df430d8c588661f79f1eed4a2728c8b689e12707cfec217f68f8"}, + {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a60861b5ca2c488ebcdc706eca94d325c26d1567921c74acc83df5e6913590c7"}, + {file = "Shapely-1.8.2-cp310-cp310-win32.whl", hash = "sha256:840be3f27a1152851c54b968f2e12d718c9f13b7acd51c482e58a70f60f29e31"}, + {file = "Shapely-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:c60f3758212ec480675b820b13035dda8af8f7cc560d2cc67999b2717fb8faef"}, + {file = "Shapely-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:56413f7d32c70b63f239eb0865b24c0c61029e38757de456cc4ab3c416559a0b"}, + {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:256bdf8080bb7bb504d47b2c76919ecebab9708cc1b26266b3ec32b42448f642"}, + {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0a0d7752b145343838bd36ed09382d85f5befe426832d7384c5b051c147acbd"}, + {file = "Shapely-1.8.2-cp36-cp36m-win32.whl", hash = "sha256:62056e64b12b6d483d79f8e34bf058d2fe734d51c9227c1713705399434eff3b"}, + {file = "Shapely-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e3ed52a081da58eb4a885c157c594876633dbd4eb283f13ba5bf39c82322d76"}, + {file = "Shapely-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c8eda45085ccdd7f9805ea4a93fdd5eb0b6039a61d5f0cefb960487e6dc17a1"}, + {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:beee3949ddf381735049cfa6532fb234d5d20a5be910c4f2fb7c7295fd7960e3"}, + {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e07b0bd2a0e61a8afd4d1c1bd23f3550b711f01274ffb53de99358fd781eefd8"}, + {file = "Shapely-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:78966332a89813b237de357a03f612fd451a871fe6e26c12b6b71645fe8eee39"}, + {file = "Shapely-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8fe641f1f61b3d43dd61b5a85d2ef023e6e19bf8f204a5160a1cb1ec645cbc09"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cec89a5617c0137f4678282e983c3d63bf838fb00cdf318cc555b4d8409f7130"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68c8e18dc9dc8a198c3addc8c9596f64137101f566f04b96ecfca0b214cb8b12"}, + {file = "Shapely-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f12695662c3ad1e6031b3de98f191963d0f09de6d1a4988acd907405644032ba"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:15a856fbb588ad5d042784e00918c662902776452008c771ecba2ff615cd197a"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d74de394684d66e25e780b0359fda85be7766af85940fa2dfad728b1a815c71f"}, + {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f3fac625690f01f35af665649e993f15f924e740b5c0ac0376900655815521"}, + {file = "Shapely-1.8.2-cp38-cp38-win32.whl", hash = "sha256:1d95842cc6bbbeab673061b63e70b07be9a375c15a60f4098f8fbd29f43af1b4"}, + {file = "Shapely-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:a58e1f362f2091743e5e13212f5d5d16251a4bb63dd0ed587c652d3be9620d3a"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5254240eefc44139ab0d128faf671635d8bdd9c23955ee063d4d6b8f20073ae0"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75042e8039c79dd01f102bb288beace9dc2f49fc44a2dea875f9b697aa8cd30d"}, + {file = "Shapely-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c0fd457ce477b1dced507a72f1e2084c9191bfcb8a1e09886990ebd02acf024"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6fcb28836ae93809de1dde73c03c9c24bab0ba2b2bf419ddb2aeb72c96d110e9"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44d2832c1b706bf43101fda92831a083467cc4b4923a7ed17319ab599c1025d8"}, + {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:137f1369630408024a62ff79a437a5657e6c5b76b9cd352dde704b425acdb298"}, + {file = "Shapely-1.8.2-cp39-cp39-win32.whl", hash = "sha256:2e02da2e988e74d61f15c720f9f613fab51942aae2dfeacdcb78eadece00e1f3"}, + {file = "Shapely-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:3423299254deec075e79fb7dc7909d702104e4167149de7f45510c3a6342eeea"}, + {file = "Shapely-1.8.2.tar.gz", hash = "sha256:572af9d5006fd5e3213e37ee548912b0341fb26724d6dc8a4e3950c10197ebb6"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +snakeviz = [ + {file = "snakeviz-2.1.1-py2.py3-none-any.whl", hash = "sha256:931142dc927101c9a4b6e89bc0577ff1a3d1886b483a04e6af70c31d2c3dce19"}, + {file = "snakeviz-2.1.1.tar.gz", hash = "sha256:0d96c006304f095cb4b3fb7ed98bb866ca35a7ca4ab9020bbc27d295ee4c94d9"}, +] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] +sortedcontainers = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] +sqlalchemy = [ + {file = "SQLAlchemy-1.4.37-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:d9050b0c4a7f5538650c74aaba5c80cd64450e41c206f43ea6d194ae6d060ff9"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b4c92823889cf9846b972ee6db30c0e3a92c0ddfc76c6060a6cda467aa5fb694"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27m-win32.whl", hash = "sha256:b55932fd0e81b43f4aff397c8ad0b3c038f540af37930423ab8f47a20b117e4c"}, + {file = "SQLAlchemy-1.4.37-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ffe487570f47536b96eff5ef2b84034a8ba4e19aab5ab7647e677d94a119ea55"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:78363f400fbda80f866e8e91d37d36fe6313ff847ded08674e272873c1377ea5"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ee34c85cbda7779d66abac392c306ec78c13f5c73a1f01b8b767916d4895d23"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b38e088659b30c2ca0af63e5d139fad1779a7925d75075a08717a21c406c0f6"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6629c79967a6c92e33fad811599adf9bc5cee6e504a1027bbf9cc1b6fb2d276d"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-win32.whl", hash = "sha256:2aac2a685feb9882d09f457f4e5586c885d578af4e97a2b759e91e8c457cbce5"}, + {file = "SQLAlchemy-1.4.37-cp310-cp310-win_amd64.whl", hash = "sha256:7a44683cf97744a405103ef8fdd31199e9d7fc41b4a67e9044523b29541662b0"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:cffc67cdd07f0e109a1fc83e333972ae423ea5ad414585b63275b66b870ea62b"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17417327b87a0f703c9a20180f75e953315207d048159aff51822052f3e33e69"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aaa0e90e527066409c2ea5676282cf4afb4a40bb9dce0f56c8ec2768bff22a6e"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1d9fb3931e27d59166bb5c4dcc911400fee51082cfba66ceb19ac954ade068"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-win32.whl", hash = "sha256:0e7fd52e48e933771f177c2a1a484b06ea03774fc7741651ebdf19985a34037c"}, + {file = "SQLAlchemy-1.4.37-cp36-cp36m-win_amd64.whl", hash = "sha256:eec39a17bab3f69c44c9df4e0ed87c7306f2d2bf1eca3070af644927ec4199fa"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:caca6acf3f90893d7712ae2c6616ecfeac3581b4cc677c928a330ce6fbad4319"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50c8eaf44c3fed5ba6758d375de25f163e46137c39fda3a72b9ee1d1bb327dfc"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:139c50b9384e6d32a74fc4dcd0e9717f343ed38f95dbacf832c782c68e3862f3"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4c3b009c9220ae6e33f17b45f43fb46b9a1d281d76118405af13e26376f2e11"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-win32.whl", hash = "sha256:9785d6f962d2c925aeb06a7539ac9d16608877da6aeaaf341984b3693ae80a02"}, + {file = "SQLAlchemy-1.4.37-cp37-cp37m-win_amd64.whl", hash = "sha256:3197441772dc3b1c6419f13304402f2418a18d7fe78000aa5a026e7100836739"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:3862a069a24f354145e01a76c7c720c263d62405fe5bed038c46a7ce900f5dd6"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8706919829d455a9fa687c6bbd1b048e36fec3919a59f2d366247c2bfdbd9c"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:06ec11a5e6a4b6428167d3ce33b5bd455c020c867dabe3e6951fa98836e0741d"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d58f2d9d1a4b1459e8956a0153a4119da80f54ee5a9ea623cd568e99459a3ef1"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-win32.whl", hash = "sha256:d6927c9e3965b194acf75c8e0fb270b4d54512db171f65faae15ef418721996e"}, + {file = "SQLAlchemy-1.4.37-cp38-cp38-win_amd64.whl", hash = "sha256:a91d0668cada27352432f15b92ac3d43e34d8f30973fa8b86f5e9fddee928f3b"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f9940528bf9c4df9e3c3872d23078b6b2da6431c19565637c09f1b88a427a684"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29a742c29fea12259f1d2a9ee2eb7fe4694a85d904a4ac66d15e01177b17ad7f"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7e579d6e281cc937bdb59917017ab98e618502067e04efb1d24ac168925e1d2a"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a940c551cfbd2e1e646ceea2777944425f5c3edff914bc808fe734d9e66f8d71"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-win32.whl", hash = "sha256:5e4e517ce72fad35cce364a01aff165f524449e9c959f1837dc71088afa2824c"}, + {file = "SQLAlchemy-1.4.37-cp39-cp39-win_amd64.whl", hash = "sha256:c37885f83b59e248bebe2b35beabfbea398cb40960cdc6d3a76eac863d4e1938"}, + {file = "SQLAlchemy-1.4.37.tar.gz", hash = "sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea"}, +] +sqlalchemy2-stubs = [ + {file = "sqlalchemy2-stubs-0.0.2a23.tar.gz", hash = "sha256:a13d94e23b5b0da8ee21986ef8890788a1f2eb26c2a9f39424cc933e4e7e87ff"}, + {file = "sqlalchemy2_stubs-0.0.2a23-py3-none-any.whl", hash = "sha256:6011d2219365d4e51f3e9d83ffeb5b904964ef1d143dc1298d8a70ce8641014d"}, +] +sqlmodel = [ + {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, + {file = "sqlmodel-0.0.6.tar.gz", hash = "sha256:3b4f966b9671b24d85529d274e6c4dbc7753b468e35d2d6a40bd75cad1f66813"}, +] +tinydb = [ + {file = "tinydb-4.7.0-py3-none-any.whl", hash = "sha256:e2cdf6e2dad49813e9b5fceb3c7943387309a8738125fbff0b58d248a033f7a9"}, + {file = "tinydb-4.7.0.tar.gz", hash = "sha256:357eb7383dee6915f17b00596ec6dd2a890f3117bf52be28a4c516aeee581100"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +tomlkit = [ + {file = "tomlkit-0.11.0-py3-none-any.whl", hash = "sha256:0f4050db66fd445b885778900ce4dd9aea8c90c4721141fde0d6ade893820ef1"}, + {file = "tomlkit-0.11.0.tar.gz", hash = "sha256:71ceb10c0eefd8b8f11fe34e8a51ad07812cb1dc3de23247425fbc9ddc47b9dd"}, +] +tornado = [ + {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, + {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, + {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, + {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, + {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, + {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, + {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, + {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, + {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, + {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, + {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, + {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, + {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, + {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, + {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, + {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, + {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, + {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, +] +typing-extensions = [ + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, +] +typing-inspect = [ + {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, + {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, + {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, +] +urllib3 = [ + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, +] +virtualenv = [ + {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, + {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, +] +watchgod = [ + {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, + {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, +] +win32-setctime = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +yapf = [ + {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, + {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, +] +yarl = [ + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, + {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, + {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, + {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, + {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, + {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, + {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, + {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, + {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, + {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, + {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, + {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, + {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, + {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, +] +zipp = [ + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, +] diff --git a/python_examples/pyproject.toml b/python_examples/pyproject.toml new file mode 100644 index 00000000..66ee549b --- /dev/null +++ b/python_examples/pyproject.toml @@ -0,0 +1,102 @@ +[tool.poetry] +name = "python_examples" +version = "0.1.0" +description = "" +authors = ["burny "] + +[tool.poetry.dependencies] +python = ">=3.8, <3.11" +# Numeric python +numpy = "^1.21" +# Write and read classes to/from json +dataclasses-json = "^0.5" +# Network access +aiohttp = "^3.7" +requests = "^2.26" +# Required by aiohttp on windows? +idna-ssl = "^1.1" +# Simple logger +loguru = "^0.6" +# Required by loguru on windows? +aiocontextvars = "^0.2" +atomicwrites = "^1.3" +contextvars = "^2.4" +win32-setctime = "^1.0" +# Image library +pillow = "^9.1" +# Better / easier datetime library +pendulum = "^2.1" +# Easier nested dictionary manipulation +dpath = "^2.0" +# File watcher +watchgod = "^0.8" +# Database with ORM +SQLAlchemy = "^1.4" +# Simple database that operates on dictionaries +tinydb = "^4.5" +# New popular database mongodb +pymongo = "^3.12" +# Generate text +lorem-text = "^2.1" +# https://github.com/tiangolo/sqlmodel +sqlmodel = "^0.0.6" +# Geometry manipulation +Shapely = "^1.8" +# Info about the system +psutil = "^5.8" +# Execute command on server via SSH, or push files via SFTP +paramiko = "^2.8" +# Simpler argparse +click = "^8.1" +# SQL ORM +peewee = "^3.14" +# Sync mongoDB ODM +mongoengine = "^0.24" +# Async mongoDB ODM +beanie = "^1.11" +# Create sqlalchemy migrations +alembic = "^1.7" +# Load environment variables from .env file +python-dotenv = "^0.20" +# Data science and plotting +pandas = "^1.4.2" +# Plotting +seaborn = "^0.11.2" +# Plotting +matplotlib = "^3.5.2" +# Plotting +bokeh = "^2.4.3" +# Animation +#manim = "^0.15.2" + + +[tool.poetry.dev-dependencies] +# Autoformatter +yapf = "^0.32" +# Linting +pylint = "^2.12" +# Test library +pytest = "^7.1" +pytest-asyncio = "^0.18" +pytest-cov = "^3.0" +pytest-benchmark = "^3.4" +# Type checking +mypy = "^0.950" +# Statistical testing +hypothesis = "^6.34" +# Cyclomatic complexity checker +radon = "^5.0" +# Function profiler, checks how often functions get called +snakeviz = "^2.1" +# Line profiler +scalene = "^1.3.16" +# Line profiler, unable to install on windows? +# line_profiler = "^3.0" +# Required by line_profiler +# ipython = "^7.16" +# Enable pre commit hooks +pre-commit = "^2.15" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From b6ffd0a3a53fe6b3b0c19dc25d66de64bf1832f3 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 14 Jun 2022 13:04:48 +0200 Subject: [PATCH 103/391] Attempt to fix tests --- .github/workflows/test_discord_bot.yml | 2 +- .github/workflows/test_fastapi_server.yml | 2 +- fastapi_server/pyproject.toml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_discord_bot.yml b/.github/workflows/test_discord_bot.yml index 6584b019..81cbd48f 100644 --- a/.github/workflows/test_discord_bot.yml +++ b/.github/workflows/test_discord_bot.yml @@ -54,7 +54,7 @@ jobs: - name: Run Python tests working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run pytest + poetry run python -m pytest build_and_deploy_docker_image: needs: [test_backend] diff --git a/.github/workflows/test_fastapi_server.yml b/.github/workflows/test_fastapi_server.yml index 1673df8a..3327b2be 100644 --- a/.github/workflows/test_fastapi_server.yml +++ b/.github/workflows/test_fastapi_server.yml @@ -55,7 +55,7 @@ jobs: - name: Run Python tests working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run pytest + poetry run python -m pytest build_and_deploy_docker_image: needs: [test_backend] diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index fdeb728c..cd018e28 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -16,9 +16,9 @@ uvicorn = "^0.16" colorama = "^0.4.4" # Simple logger loguru = "^0.5" -# Network interaction -requests = "^2.27.1" +# Replay parser zephyrus-sc2-parser = "^0.3.7" +# Multipart replay upload python-multipart = "^0.0.5" [tool.poetry.dev-dependencies] From 7b57ac44fa3a60a815fae5983841e2e80c2d87fe Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 14 Jun 2022 13:19:09 +0200 Subject: [PATCH 104/391] Fix tests by adding root folder to path --- discord_bot/pyproject.toml | 5 +++++ discord_bot/test/__init__.py | 0 discord_bot/test/test_mmr.py | 8 ++++++++ discord_bot/test/test_remind_at.py | 8 ++++++++ discord_bot/test/test_remind_in.py | 8 ++++++++ fastapi_server/pyproject.toml | 3 --- 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 discord_bot/test/__init__.py diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml index 81224b96..86c56e9e 100644 --- a/discord_bot/pyproject.toml +++ b/discord_bot/pyproject.toml @@ -6,12 +6,17 @@ authors = ["burny "] [tool.poetry.dependencies] python = ">=3.8, <3.11" +# Datetime library arrow = "^1.2.2" +# Discord bot hikari = "^2.0.0-alpha.108" +# Simple logger loguru = "^0.6.0" +# Table plotting ptable = "^0.9.2" [tool.poetry.dev-dependencies] +# Test library hypothesis = "^6.8.5" pytest = "^6.2.3" pytest-asyncio = "^0.15.1" diff --git a/discord_bot/test/__init__.py b/discord_bot/test/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/discord_bot/test/test_mmr.py b/discord_bot/test/test_mmr.py index dac9935e..f7bdcb0b 100644 --- a/discord_bot/test/test_mmr.py +++ b/discord_bot/test/test_mmr.py @@ -1,3 +1,11 @@ +import sys +from pathlib import Path + +try: + sys.path.append(str(Path(__file__).parents[2])) +except IndexError: + pass + import pytest from discord_bot.commands.public_mmr import Sc2LadderResult diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py index 412e103a..ff7391ea 100644 --- a/discord_bot/test/test_remind_at.py +++ b/discord_bot/test/test_remind_at.py @@ -1,3 +1,11 @@ +import sys +from pathlib import Path + +try: + sys.path.append(str(Path(__file__).parents[2])) +except IndexError: + pass + import asyncio import arrow diff --git a/discord_bot/test/test_remind_in.py b/discord_bot/test/test_remind_in.py index b06b38a2..94ed9da0 100644 --- a/discord_bot/test/test_remind_in.py +++ b/discord_bot/test/test_remind_in.py @@ -1,3 +1,11 @@ +import sys +from pathlib import Path + +try: + sys.path.append(str(Path(__file__).parents[2])) +except IndexError: + pass + import random import arrow diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index cd018e28..b053b6a5 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -26,9 +26,6 @@ python-multipart = "^0.0.5" pytest = "^7.0.1" pytest-asyncio = "^0.16" hypothesis = "^6.39.3" -# Autoformatter -yapf = "^0.32" -toml = "^0.10.2" [build-system] requires = ["poetry-core>=1.0.0"] From 60f926792ce48be791be71298c8154d1540634e4 Mon Sep 17 00:00:00 2001 From: burny Date: Tue, 14 Jun 2022 13:49:28 +0200 Subject: [PATCH 105/391] Add example shell scripts --- .pre-commit-config.yaml | 4 ++-- python_examples/templates/find_files.sh | 13 +++++++++++++ python_examples/templates/folder_size.sh | 8 ++++++++ python_examples/templates/rename_files.sh | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 python_examples/templates/find_files.sh create mode 100644 python_examples/templates/folder_size.sh create mode 100644 python_examples/templates/rename_files.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a1199f1f..99912504 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -209,7 +209,7 @@ repos: name: build_docker_image_fastapi_server stages: [commit] language: system - entry: bash -c "cd fastapi_server && docker build -t fastapi_server_image_precommit . && docker rmi fastapi_server_image_precommit" + entry: bash -c "cd fastapi_server && docker build --quiet --tag fastapi_server_image_precommit . && docker rmi fastapi_server_image_precommit" pass_filenames: false # Build discord bot docker image @@ -217,7 +217,7 @@ repos: name: build_docker_image_discord_bot stages: [commit] language: system - entry: bash -c "cd discord_bot && docker build -t discord_bot_image_precommit . && docker rmi discord_bot_image_precommit" + entry: bash -c "cd discord_bot && docker build --quiet --tag discord_bot_image_precommit . && docker rmi discord_bot_image_precommit" pass_filenames: false # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) diff --git a/python_examples/templates/find_files.sh b/python_examples/templates/find_files.sh new file mode 100644 index 00000000..a91758dc --- /dev/null +++ b/python_examples/templates/find_files.sh @@ -0,0 +1,13 @@ +# Find all image files and count the result +find . -iregex '.*\.\(jpg\|jpeg\|png\)' | wc -l + +# Find all files ending with "hello.py" (case insensitive) +find . -iname "*hello.py" + +# Find and delete empty folders +find ~/Downloads/ -empty -type d -delete + +# In current git repository, find all python files in subfolder "fastapi_server" +git ls-files '*.py' | grep fastapi_server +# In current git repository, find all python files in test folders or that contain "test" in their filename +git ls-files '*.py' | grep -E '.*test.*' diff --git a/python_examples/templates/folder_size.sh b/python_examples/templates/folder_size.sh new file mode 100644 index 00000000..b323dc1b --- /dev/null +++ b/python_examples/templates/folder_size.sh @@ -0,0 +1,8 @@ +# Only show root folder total size +du -sh /home/burny + +# Show all folders (including root) with 1 level depth and their size, sorted in ascending order +du --max-depth=1 -h /home/burny | sort -h + +# Show all folders (excluding root) with 1 level depth and their size, sorted in ascending order +du -sh /home/burny/* | sort -h diff --git a/python_examples/templates/rename_files.sh b/python_examples/templates/rename_files.sh new file mode 100644 index 00000000..4a066dda --- /dev/null +++ b/python_examples/templates/rename_files.sh @@ -0,0 +1,2 @@ +# For all files ending with ".SC2Map", replace "LE.SC2Map" with ".SC2Map" +rename -v 's/LE.SC2Map/.SC2Map/' *.SC2Map From 0be0a706bbdb869758fe659606fa5a200a5abd78 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 16 Jun 2022 00:59:08 +0200 Subject: [PATCH 106/391] Add xonsh --- .github/workflows/check_python_code.yml | 16 +-- .pre-commit-config.yaml | 162 +---------------------- bored_gems/package.json | 3 +- discord_bot/main.py | 32 ++--- poetry.lock | 22 +-- replay_comparer/README.md | 3 + replay_comparer/package.json | 4 +- replay_comparer/svelte.config.js | 5 +- run_tests.xsh | 88 ++++++++++++ supabase_stream_scripts/README.md | 2 +- supabase_stream_scripts/jest.config.js | 16 +-- supabase_stream_scripts/package.json | 3 +- supabase_stream_scripts/svelte.config.js | 11 +- supabase_stream_scripts/tsconfig.json | 2 +- svelte_frontend/package.json | 3 +- 15 files changed, 152 insertions(+), 220 deletions(-) create mode 100644 run_tests.xsh diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 9e36f0ca..bad9a1e2 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -31,9 +31,9 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install Poetry + - name: Install poetry and xonsh run: | - pip install poetry + pip install poetry xonsh[full] - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true @@ -48,14 +48,6 @@ jobs: run: | poetry install - - name: Format python code + - name: Format, lint and test run: | - poetry run yapf --in-place $(git ls-files '*.py') - - - name: Run pylint - run: | - poetry run pylint $(git ls-files '*.py') - - - name: Run mypy - run: | - poetry run mypy $(git ls-files '*.py') + xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 99912504..66ad8207 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -84,166 +84,12 @@ repos: - repo: local hooks: - # Autoformat python code - - id: yapf - name: format python code + # Autoformat, lint, test + - id: xonsh + name: Run xonsh script stages: [commit] language: system - entry: /bin/bash -c "poetry run yapf --in-place $(git ls-files '*.py')" - pass_filenames: false - - # If you want to run manually: - # poetry run pylint $(git ls-files '*.py') - # poetry run pylint python_examples/templates - # poetry run pylint python_examples/templates/inspect_function.py - - id: pylint - name: pylint - stages: [commit] - language: system - entry: /bin/bash -c "poetry run pylint $(git ls-files '*.py')" - pass_filenames: false - - # poetry run mypy ./ - # poetry run mypy $(git ls-files '*.py') - # poetry run mypy python_examples/templates - # poetry run mypy python_examples/templates/inspect_function.py - # Run mypy type checks - - id: mypy - name: mypy - stages: [commit] - language: system - entry: /bin/bash -c "poetry run mypy $(git ls-files '*.py')" - pass_filenames: false - - # TODO Figure out how to only format changed frontend files - have to pass in file names to the bash command? - - id: format_svelte_frontend - name: format_svelte_frontend - stages: [commit] - language: system - entry: bash -c "cd svelte_frontend && npm run format" - files: ^svelte_frontend/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: lint_svelte_frontend - name: lint_svelte_frontend - stages: [commit] - language: system - entry: bash -c "cd svelte_frontend && npm run lint" - files: ^svelte_frontend/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: format_supabase_stream_scripts - name: format_supabase_stream_scripts - stages: [commit] - language: system - entry: bash -c "cd supabase_stream_scripts && npm run format" - files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: lint_supabase_stream_scripts - name: lint_supabase_stream_scripts - stages: [commit] - language: system - entry: bash -c "cd supabase_stream_scripts && npm run lint" - files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: format_replay_comparer - name: format_replay_comparer - stages: [commit] - language: system - entry: bash -c "cd replay_comparer && npm run format" - files: ^replay_comparer/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: lint_replay_comparer - name: lint_replay_comparer - stages: [commit] - language: system - entry: bash -c "cd replay_comparer && npm run lint" - files: ^replay_comparer/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: format_bored_gems - name: format_bored_gems - stages: [commit] - language: system - entry: bash -c "cd bored_gems && npm run format" - files: ^bored_gems/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: lint_bored_gems - name: lint_bored_gems - stages: [commit] - language: system - entry: bash -c "cd bored_gems && npm run lint" - files: ^bored_gems/.*\.(svelte|ts|js)$ - pass_filenames: false - - # Run python examples tests - - id: pytest_python_examples - name: pytest_python_examples - stages: [commit] - language: system - entry: poetry run python -m pytest python_examples - pass_filenames: false - - # Run fastapi server tests - - id: pytest_fastapi_server - name: pytest_fastapi_server - stages: [commit] - language: system - entry: poetry run python -m pytest fastapi_server - pass_filenames: false - - # Run discord bot tests - - id: pytest_discord_bot - name: pytest_discord_bot - stages: [commit] - language: system - entry: poetry run python -m pytest discord_bot - pass_filenames: false - - # Build fastapi server docker image - - id: build_docker_image_fastapi_server - name: build_docker_image_fastapi_server - stages: [commit] - language: system - entry: bash -c "cd fastapi_server && docker build --quiet --tag fastapi_server_image_precommit . && docker rmi fastapi_server_image_precommit" - pass_filenames: false - - # Build discord bot docker image - - id: build_docker_image_discord_bot - name: build_docker_image_discord_bot - stages: [commit] - language: system - entry: bash -c "cd discord_bot && docker build --quiet --tag discord_bot_image_precommit . && docker rmi discord_bot_image_precommit" - pass_filenames: false - - # Run supabase stream scripts tests (run build before test to create .svelte-kit folder with tsconfig.json) - - id: test_supabase_stream_scripts - name: test_supabase_stream_scripts - stages: [commit] - language: system - entry: bash -c "cd supabase_stream_scripts && npm run build && npm run test" - files: ^supabase_stream_scripts/.*\.(svelte|ts|js)$ - pass_filenames: false - - - id: test_bored_gems - name: test_bored_gems - stages: [commit] - language: system - entry: bash -c "cd bored_gems && npm run test" - files: ^bored_gems/.*\.(svelte|ts|js)$ - pass_filenames: false - - # Run svelte e2e tests - - id: svelte_e2e_tests - name: svelte_e2e_tests - stages: [commit] - language: system - entry: poetry run pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip - files: ^svelte_frontend/.*\.(svelte|ts|js)$ + entry: xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest pass_filenames: false # - id: pytest-cov diff --git a/bored_gems/package.json b/bored_gems/package.json index 32f70234..4e07a837 100644 --- a/bored_gems/package.json +++ b/bored_gems/package.json @@ -4,12 +4,13 @@ "scripts": { "dev": "cross-env DEV=true svelte-kit dev", "build": "svelte-kit build", + "build-precommit": "svelte-kit build | grep ERR", "preview": "svelte-kit preview", "test": "playwright test", "check": "svelte-check --tsconfig tsconfig.json", "check:watch": "svelte-check --tsconfig tsconfig.json --watch", "lint": "eslint --ignore-path .gitignore . --max-warnings 0", - "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", + "format": "prettier --write --loglevel error .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "update": "npx npm-check-updates -u && npm run prune" }, diff --git a/discord_bot/main.py b/discord_bot/main.py index 9a0d71cb..5103928c 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -1,12 +1,10 @@ -import sys -from pathlib import Path - -sys.path.append(str(Path(__file__).parents[1])) - import asyncio import os -from typing import AsyncIterable, Awaitable, Callable +from pathlib import Path +from typing import AsyncIterable, Awaitable, Callable, Union +from commands.public_mmr import public_mmr +from commands.public_remind import Remind from hikari import ( Embed, GatewayBot, @@ -18,9 +16,6 @@ ) from loguru import logger -from discord_bot.commands.public_mmr import public_mmr -from discord_bot.commands.public_remind import Remind - # Load key and start bot DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" @@ -45,15 +40,21 @@ async def generic_command_caller( event: GuildMessageCreateEvent, - function_to_call: Callable[[GuildMessageCreateEvent, str], Awaitable], + function_to_call: Callable[[GuildMessageCreateEvent, str], Awaitable[Union[Embed, str]]], message: str, add_remove_emoji: bool = False, ) -> None: + """ + @param function_to_call: A function to be called with the given message, expects function to return an Embed or string + @param message: Parsed messaged by the user, without the command + @param add_remove_emoji: If true, bot will react to its own message with a 'X' emoji + so that the mentioned user can remove the bot message at will. + """ channel = event.get_channel() if not channel: return # Call the given function with the event and message - response = await function_to_call(event, message) + response: Union[Embed, str] = await function_to_call(event, message) if isinstance(response, Embed): sent_message = await channel.send(f'{event.author.mention}', embed=response) else: @@ -71,11 +72,6 @@ async def loop_function() -> None: await my_reminder.tick() -def is_command(cmd_name: str, content: str) -> bool: - """Check if the message sent is a valid command.""" - return content == f'{PREFIX}{cmd_name}' - - async def get_all_servers() -> AsyncIterable[GatewayGuild]: server: GatewayGuild all_connected_servers = bot.cache.get_available_guilds_view() @@ -156,10 +152,10 @@ async def handle_new_message(event: GuildMessageCreateEvent) -> None: command, *message_list = event.content.split() command = command[len(PREFIX):] message = ' '.join(message_list) - await handle_commands(command, message, event) + await handle_commands(event, command, message) -async def handle_commands(command: str, message: str, event: GuildMessageCreateEvent) -> None: +async def handle_commands(event: GuildMessageCreateEvent, command: str, message: str) -> None: function_mapping = { 'reminder': my_reminder.public_remind_in, 'remindat': my_reminder.public_remind_at, diff --git a/poetry.lock b/poetry.lock index b395d8ca..79e18f7e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -185,7 +185,7 @@ typing-extensions = ">=3.10.0" [[package]] name = "certifi" -version = "2022.5.18.1" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -486,7 +486,7 @@ speedups = ["aiodns (>=3.0,<4.0)", "cchardet (>=2.1,<3.0)", "Brotli (>=1.0,<2.0) [[package]] name = "hypothesis" -version = "6.47.2" +version = "6.47.3" description = "A library for property-based testing" category = "dev" optional = false @@ -494,7 +494,7 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=19.2.0" -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11.0b1\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] @@ -1053,14 +1053,14 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.14.1" +version = "2.14.2" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" +astroid = ">=2.11.6,<=2.12.0-dev0" colorama = {version = "*", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1851,8 +1851,8 @@ bokeh = [ {file = "bokeh-2.4.3.tar.gz", hash = "sha256:ef33801161af379665ab7a34684f2209861e3aefd5c803a21fbbb99d94874b03"}, ] certifi = [ - {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, - {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, @@ -2170,8 +2170,8 @@ hikari = [ {file = "hikari-2.0.0.dev108.tar.gz", hash = "sha256:d13cfcd0e3732185fa3048b5d9fd8b6078b5dbb0df7820ba7e3e55083bf9d4b5"}, ] hypothesis = [ - {file = "hypothesis-6.47.2-py3-none-any.whl", hash = "sha256:d6a7bb1b695edc57388b86960138d23aeddcb95192cff49755e280e3296558c9"}, - {file = "hypothesis-6.47.2.tar.gz", hash = "sha256:9c01a225eada7d74d38430e3e91e659e3a892fbc2b15f7b051779ded6ab73ee7"}, + {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, + {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, ] identify = [ {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, @@ -2787,8 +2787,8 @@ pygments = [ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.14.1-py3-none-any.whl", hash = "sha256:bb71e6d169506de585edea997e48d9ff20c0dc0e2fbc1d166bad6b640120326b"}, - {file = "pylint-2.14.1.tar.gz", hash = "sha256:549261e0762c3466cc001024c4419c08252cb8c8d40f5c2c6966fea690e7fe2a"}, + {file = "pylint-2.14.2-py3-none-any.whl", hash = "sha256:592d0a4d2ffa8e33020209d255827c5a310499cdc023d156187bc677d86bd495"}, + {file = "pylint-2.14.2.tar.gz", hash = "sha256:482f1329d4b6b9e52599754a2e502c0ed91ebdfd0992a2299b7fa136a6c12349"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, diff --git a/replay_comparer/README.md b/replay_comparer/README.md index f6a1838f..ceb1b1c3 100644 --- a/replay_comparer/README.md +++ b/replay_comparer/README.md @@ -1,7 +1,9 @@ # SC2 Replay Comparer + It uses [Zephyrus sc2 replay plarser](https://github.com/ZephyrBlu/zephyrus-sc2-parser) to get the data from replays, then displays them in [highcharts](https://www.highcharts.com/). # Live version + [Develop branch](https://replaycomparer.netlify.app) # Requirement @@ -36,6 +38,7 @@ npm run build ``` # Update packages + ``` npm run update ``` diff --git a/replay_comparer/package.json b/replay_comparer/package.json index 5e7729d6..8bedae8d 100644 --- a/replay_comparer/package.json +++ b/replay_comparer/package.json @@ -5,13 +5,15 @@ "dev": "cross-env DEV=true BACKEND_SERVER='localhost:8000' svelte-kit dev", "devs": "cross-env DEV=true BACKEND_SERVER='localhost:8000' svelte-kit dev --https", "build": "svelte-kit build", + "build-precommit": "svelte-kit build | grep ERR", "preview": "svelte-kit preview", + "test": "sleep 0", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write './**/*.{svelte,ts}'" + "format": "prettier --write --loglevel error ." }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^3.2.0", diff --git a/replay_comparer/svelte.config.js b/replay_comparer/svelte.config.js index 77911500..87d820da 100644 --- a/replay_comparer/svelte.config.js +++ b/replay_comparer/svelte.config.js @@ -1,5 +1,6 @@ -import preprocess from "svelte-preprocess" import adapter from "@sveltejs/adapter-static" +import preprocess from "svelte-preprocess" + const baseUrl = process.env.BASE_URL || "" /** @type {import('@sveltejs/kit').Config} */ @@ -17,7 +18,7 @@ const config = { fallback: null, }), prerender: { - default: true + default: true, }, paths: { base: baseUrl, diff --git a/run_tests.xsh b/run_tests.xsh new file mode 100644 index 00000000..a1854984 --- /dev/null +++ b/run_tests.xsh @@ -0,0 +1,88 @@ +#!/usr/bin/env xonsh +# In CI: xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all +# For dev: xonsh run_tests.xsh run --pylint --npmlint +# For dev (slower): xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest +from typing import List +from xonsh.tools import print_color +import xonsh.cli_utils as xcli + +# $PATH.append($(pwd).strip()) +# print($PATH) + +python_projects = ["burny_common", "discord_bot", "fastapi_server", "python_examples"] +frontend_projects = ["bored_gems", "replay_comparer", "supabase_stream_scripts", "svelte_frontend"] +changed_files: List[str] = $(git diff HEAD --name-only).splitlines() + +def has_changed_files(project_name: str) -> bool: + return any(project_name in file_name for file_name in changed_files) + +def format_and_lint_project(project_name: str, all_files: bool = False): + if all_files: + files = $(git ls-files '*.py').splitlines() + files_related_to_project = [file_name for file_name in files + if project_name in file_name] + else: + files_related_to_project = [file_name for file_name in changed_files + if project_name in file_name and file_name.endswith(".py")] + if not files_related_to_project: + return + # Autoformat + print_color(f"Running {{GREEN}}yapf{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}} on {len(files_related_to_project)} file(s)") + poetry run yapf --in-place @(files_related_to_project) + # Lint + print_color(f"Running {{GREEN}}pylint{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}} on {len(files_related_to_project)} file(s)") + poetry run python -m pylint @(files_related_to_project) + +def run_mypy(): + # Run mypy on all python files because types could have changed which can affect other files + python_files = $(git ls-files '*.py').splitlines() + print_color(f"Running {{GREEN}}mypy{{RESET}} on python files") + poetry run mypy @(python_files) + +def run( + run_python_lint: xcli.Arg('--pylint', '-pl', action="store_true") = False, + run_python_test: xcli.Arg('--pytest', '-pt', action="store_true") = False, + run_npm_lint: xcli.Arg('--npmlint', '-nl', action="store_true") = False, + run_npm_test: xcli.Arg('--npmtest', '-nt', action="store_true") = False, + run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = True, + ): + + if run_python_lint or run_python_test: + if run_python_lint: + run_mypy() + for project_name in python_projects: + if run_only_changed_files and not has_changed_files(project_name): + continue + if run_python_lint: + format_and_lint_project(project_name, all_files=not run_only_changed_files) + if run_python_test: + poetry run python -m pytest @(project_name) + if project_name in ["fastapi_server", "discord_bot"]: + print_color(f"Building {{GREEN}}docker image{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}}") + cd @(project_name) + docker build --quiet --tag precommit_image . && docker rmi precommit_image + cd .. + + if run_npm_lint or run_npm_test: + for project_name in frontend_projects: + if run_only_changed_files and not has_changed_files(project_name): + continue + print_color(f"Running {{GREEN}}prettier, lint and tests{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}}") + cd @(project_name) + if run_npm_lint and run_npm_test: + # Add npm run format + npm install && npm run lint && npm run build-precommit && npm run test + if run_npm_lint: + # npm run format # Fix me + npm install && npm run lint + elif run_npm_test: + npm install && npm run build-precommit && npm run test + cd .. + if run_npm_test: + if project_name in ["svelte_frontend"]: + poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip + +if __name__ == '__main__': + parser = xcli.make_parser("test commands") + parser.add_command(run) + xcli.dispatch(parser) diff --git a/supabase_stream_scripts/README.md b/supabase_stream_scripts/README.md index 0dd59ccc..361ec1bd 100644 --- a/supabase_stream_scripts/README.md +++ b/supabase_stream_scripts/README.md @@ -1,6 +1,7 @@ # fastapi-svelte-typescript-template # Live versions + [Develop branch](https://streammanager.netlify.app/) # Requirement @@ -35,7 +36,6 @@ Launch OBS with `--disable-web-security` When adding it to OBS overlay, add it as browser scene with width=320 and height=300 - # Autoformatting ``` diff --git a/supabase_stream_scripts/jest.config.js b/supabase_stream_scripts/jest.config.js index a108fe83..f6be30a1 100644 --- a/supabase_stream_scripts/jest.config.js +++ b/supabase_stream_scripts/jest.config.js @@ -1,9 +1,9 @@ export default { - testEnvironment: 'jsdom', - transform: { - '\\.js$': 'babel-jest', - '^.+\\.ts$': 'ts-jest', - '^.+\\.svelte$': ['svelte-jester', { preprocess: true }] - }, - moduleFileExtensions: ['js', 'ts', 'svelte'], -}; + testEnvironment: "jsdom", + transform: { + "\\.js$": "babel-jest", + "^.+\\.ts$": "ts-jest", + "^.+\\.svelte$": ["svelte-jester", { preprocess: true }], + }, + moduleFileExtensions: ["js", "ts", "svelte"], +} diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index be66687d..c48a649c 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -4,13 +4,14 @@ "scripts": { "dev": "cross-env DEV=true LOCALUSER=LOCALTEST SC2ACCOUNTSDB='sc2accounts_dev' SC2BUILDORDERSDB='sc2buildorders_dev' svelte-kit dev", "build": "svelte-kit build", + "build-precommit": "svelte-kit build | grep ERR", "preview": "svelte-kit preview", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --ignore-path .gitignore --write './**/*.{svelte,ts}'", + "format": "prettier --write --loglevel error .", "test": "jest" }, "devDependencies": { diff --git a/supabase_stream_scripts/svelte.config.js b/supabase_stream_scripts/svelte.config.js index abda7b82..1b0d0a98 100644 --- a/supabase_stream_scripts/svelte.config.js +++ b/supabase_stream_scripts/svelte.config.js @@ -1,5 +1,6 @@ -import preprocess from "svelte-preprocess" import adapter from "@sveltejs/adapter-static" +import preprocess from "svelte-preprocess" + const baseUrl = process.env.BASE_URL || "" /** @type {import('@sveltejs/kit').Config} */ @@ -16,10 +17,10 @@ const config = { assets: "build", fallback: null, }), - prerender: { - // This can be false if you're using a fallback (i.e. SPA mode) - default: true - }, + prerender: { + // This can be false if you're using a fallback (i.e. SPA mode) + default: true, + }, paths: { base: baseUrl, }, diff --git a/supabase_stream_scripts/tsconfig.json b/supabase_stream_scripts/tsconfig.json index 953058ee..34943f35 100644 --- a/supabase_stream_scripts/tsconfig.json +++ b/supabase_stream_scripts/tsconfig.json @@ -3,4 +3,4 @@ "esModuleInterop": true }, "extends": "./.svelte-kit/tsconfig.json" -} \ No newline at end of file +} diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 199de28b..43206627 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -4,13 +4,14 @@ "scripts": { "dev": "cross-env BACKEND_SERVER='localhost:8000' svelte-kit dev", "build": "svelte-kit build", + "build-precommit": "svelte-kit build | grep ERR", "preview": "svelte-kit preview", "preview2": "cross-env BACKEND_SERVER='localhost:7899' npm run build && cross-env BACKEND_SERVER='localhost:7899' svelte-kit preview -p 3000", "test": "playwright test", "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "eslint --ignore-path .gitignore . --max-warnings 0", - "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", + "format": "prettier --write --loglevel error .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "update": "npx npm-check-updates -u && npm run prune" }, From 6d1e6b2cb38f1d55d3bbf212ca8e476d16cfefa1 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 16 Jun 2022 21:19:53 +0200 Subject: [PATCH 107/391] Fix and improve xonsh --- .github/workflows/check_python_code.yml | 4 +- .pre-commit-config.yaml | 2 +- bored_gems/package.json | 2 +- poetry.lock | 196 +++++++++++++++- pyproject.toml | 1 + .../templates/redirect_shell_output.sh | 33 +++ replay_comparer/package.json | 2 +- run_tests.xsh | 216 ++++++++++++------ supabase_stream_scripts/package.json | 2 +- svelte_frontend/package.json | 2 +- 10 files changed, 388 insertions(+), 72 deletions(-) create mode 100644 python_examples/templates/redirect_shell_output.sh diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index bad9a1e2..0849dfa4 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -33,7 +33,7 @@ jobs: - name: Install poetry and xonsh run: | - pip install poetry xonsh[full] + pip install poetry - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true @@ -50,4 +50,4 @@ jobs: - name: Format, lint and test run: | - xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all + poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 66ad8207..720a4c50 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -89,7 +89,7 @@ repos: name: Run xonsh script stages: [commit] language: system - entry: xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest + entry: poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest pass_filenames: false # - id: pytest-cov diff --git a/bored_gems/package.json b/bored_gems/package.json index 4e07a837..71cd1768 100644 --- a/bored_gems/package.json +++ b/bored_gems/package.json @@ -10,7 +10,7 @@ "check": "svelte-check --tsconfig tsconfig.json", "check:watch": "svelte-check --tsconfig tsconfig.json --watch", "lint": "eslint --ignore-path .gitignore . --max-warnings 0", - "format": "prettier --write --loglevel error .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "update": "npx npm-check-updates -u && npm run prune" }, diff --git a/poetry.lock b/poetry.lock index 79e18f7e..d5a8ccdf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -360,6 +360,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "distro" +version = "1.7.0" +description = "Distro - an OS platform information API" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "dpath" version = "2.0.6" @@ -447,6 +455,14 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "gnureadline" +version = "8.1.2" +description = "The standard Python readline extension statically linked against the GNU readline library." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "greenlet" version = "1.1.2" @@ -977,6 +993,17 @@ pyyaml = ">=5.1" toml = "*" virtualenv = ">=20.0.8" +[[package]] +name = "prompt-toolkit" +version = "3.0.29" +description = "Library for building powerful interactive command lines in Python" +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +wcwidth = "*" + [[package]] name = "psutil" version = "5.9.1" @@ -1126,6 +1153,14 @@ python-versions = ">=3.6.8" [package.extras] diagrams = ["railroad-diagrams", "jinja2"] +[[package]] +name = "pyperclip" +version = "1.8.2" +description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pytest" version = "7.1.2" @@ -1376,6 +1411,17 @@ numpy = ">=1.15" pandas = ">=0.23" scipy = ">=1.0" +[[package]] +name = "setproctitle" +version = "1.2.3" +description = "A Python module to customize the process title" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +test = ["pytest"] + [[package]] name = "setuptools-scm" version = "6.4.2" @@ -1637,6 +1683,14 @@ python-versions = ">=3.7" [package.dependencies] anyio = ">=3.0.0,<4" +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "websockets" version = "10.1" @@ -1664,6 +1718,31 @@ category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +[[package]] +name = "xonsh" +version = "0.12.4" +description = "Python-powered, cross-platform, Unix-gazing shell" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +distro = {version = "*", optional = true, markers = "platform_system == \"Linux\" and extra == \"full\""} +gnureadline = {version = "*", optional = true, markers = "platform_system == \"Darwin\" and extra == \"full\""} +prompt-toolkit = {version = ">=3.0.27", optional = true, markers = "extra == \"full\""} +pygments = {version = ">=2.2", optional = true, markers = "extra == \"full\""} +pyperclip = {version = "*", optional = true, markers = "extra == \"full\""} +setproctitle = {version = "*", optional = true, markers = "platform_system == \"Windows\" and extra == \"full\""} + +[package.extras] +full = ["prompt-toolkit (>=3.0.27)", "pyperclip", "pygments (>=2.2)", "gnureadline", "distro", "setproctitle"] +linux = ["distro"] +mac = ["gnureadline"] +proctitle = ["setproctitle"] +ptk = ["prompt-toolkit (>=3.0.27)", "pyperclip"] +pygments = ["pygments (>=2.2)"] +zipapp = ["importlib-resources"] + [[package]] name = "yapf" version = "0.32.0" @@ -1712,7 +1791,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "ad2dcd4e64772455b4050dfb8d70a8a222e82311d1f32062d11b1d0ece8645d5" +content-hash = "32f7c6caf13725522bb44cb479b10a38e406fcb0a8faef59458ecddab2daf4cb" [metadata.files] aiocontextvars = [ @@ -2020,6 +2099,10 @@ distlib = [ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] +distro = [ + {file = "distro-1.7.0-py3-none-any.whl", hash = "sha256:d596311d707e692c2160c37807f83e3820c5d539d5a83e87cfb6babd8ba3a06b"}, + {file = "distro-1.7.0.tar.gz", hash = "sha256:151aeccf60c216402932b52e40ee477a939f8d58898927378a02abbe852c1c39"}, +] dpath = [ {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, @@ -2104,6 +2187,30 @@ frozenlist = [ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] +gnureadline = [ + {file = "gnureadline-8.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:861936c9b362d96152af2d73ccb6f3e901e70f0e4a2e7e62f4e226e91d349edb"}, + {file = "gnureadline-8.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ce5c49ecc54e1df0193e90422806a5940f908553206689aeaa04bc959d3aa9a"}, + {file = "gnureadline-8.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753aa1e46b4260b38da424c6a7da7a3ddac161a0b4e6fb71c1093e9ef3d2e73"}, + {file = "gnureadline-8.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb921c2cbc14671bb81f3f33d9363a9d0720203b5d716baee32e51c399e914b"}, + {file = "gnureadline-8.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e3a8aaf1d61d351c16ad2d3425caf5768603ff5d0e86ba61da9b8756bdd1b95"}, + {file = "gnureadline-8.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:72da8bac1eb24b6c8237a33d7019a3f004a3d5ba867337175ed764831d9a2c99"}, + {file = "gnureadline-8.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de3d8ea66f1b5d00ed843b8925fc07476b8c838c38e584af8639c6a976a43d08"}, + {file = "gnureadline-8.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:194bafa818d0fc3d46f8d71a8811a297a493c1264d3e2d0a71b1b1ff05f8fc15"}, + {file = "gnureadline-8.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:49df5a432e4ff39cee1b0632c6d0e5fb304757113e502d70b50e33d9ffa47372"}, + {file = "gnureadline-8.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e84e903de1514043e6a22866a1973c2ad5f5717f78e9d54e4d6809c48fbd3d81"}, + {file = "gnureadline-8.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b422ff3a78e281ee2e19b0eff70efa48396284bbefa86b83438d668ea9d038a3"}, + {file = "gnureadline-8.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:264f22e865975a3c2ac1183f431dddd8ff7de5a645b89a801c6a276d800f49f3"}, + {file = "gnureadline-8.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c7971653083a48049abd52baa9c8c0188aee362e7b2dd236fe51ecd4e6bc9bbe"}, + {file = "gnureadline-8.1.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4ad9b10409d969ba42acbf89e58352cf3043a5155c2ee677d061e292336b5479"}, + {file = "gnureadline-8.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecdc4368bd2f7ae9a22de31b024455222082cb49b98ee69ffd0a59734bf648e1"}, + {file = "gnureadline-8.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fde3e6417d9004381e8e9835e0a89d81d2d77eeace9364d2e3d9fb64054d449"}, + {file = "gnureadline-8.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:17a651e0c49d4b44e8ccf8992edc5a544e33ed9695d3b940ef002858c2215744"}, + {file = "gnureadline-8.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2816bac8be6bc0e3aa2301acac76e308137eeef1b618c9e0c95c1f89a139a4d8"}, + {file = "gnureadline-8.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c402bc6e107beb015ae18c3d2e11f28375f049e464423ead88b35affe80f9be0"}, + {file = "gnureadline-8.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ea248385e0d87a3fada38c9164a5756861aa59d6ee010c8be30eeb41f41b49"}, + {file = "gnureadline-8.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1e2d34b0c4ad81c7b00019fafa6de2faf6969c55fa58229e26267cae34047e"}, + {file = "gnureadline-8.1.2.tar.gz", hash = "sha256:4262a6aa356ab22ef642f43a7f94eb42a72d6f0c532edb4e8c6b933f573056d2"}, +] greenlet = [ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, @@ -2693,6 +2800,10 @@ pre-commit = [ {file = "pre_commit-2.19.0-py2.py3-none-any.whl", hash = "sha256:10c62741aa5704faea2ad69cb550ca78082efe5697d6f04e5710c3c229afdd10"}, {file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"}, ] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, + {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, +] psutil = [ {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, @@ -2919,6 +3030,9 @@ pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] +pyperclip = [ + {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, +] pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, @@ -3057,6 +3171,79 @@ seaborn = [ {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, ] +setproctitle = [ + {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a668acec8b61a971de54bc4c733869ea7b0eb1348eae5a32b9477f788908e5c"}, + {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52265182fe5ac237d179d8e949248d307882a2e6ec7f189c8dac1c9d1b3631fa"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d00ef63a1f78e13c236895badac77b6c8503377467b9c1a4f81fe729d16e03"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82a49aaf440232c762539ab3737b5174d31aba0141fd4bf4d8739c28d18624"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:791bed39e4ecbdd008b64999a60c9cc560d17b3836ca0c27cd4708e8e1bcf495"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8e4da68d4d4ba46d4c5db6ae5eb61b11de9c520f25ae8334570f4d0018a8611"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47f97f591ea2335b7d35f5e9ad7d806385338182dc6de5732d091e9c70ed1cc0"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:501c084cf3df7d848e91c97d4f8c44d799ba545858a79c6960326ce6f285b4e4"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a39b30d7400c0d50941fe19e1fe0b7d35676186fec4d9c010129ac91b883fd26"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b213376fc779c0e1a4b60008f3fd03f74e9baa9665db37fa6646e98d31baa6d8"}, + {file = "setproctitle-1.2.3-cp310-cp310-win32.whl", hash = "sha256:e24fa9251cc22ddb88ef183070063fdca826c9636381f1c4fb9d2a1dccb7c2a4"}, + {file = "setproctitle-1.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:3b1883ccdbee624386dc046cfbcd80c4e75e24c478f35627984a79892e088b88"}, + {file = "setproctitle-1.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9cf1098205c23fbcaaaef798afaff714fa9ffadf24166f5e85e6d16b9ef82a1"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a546cd2dfaecb227d24122257b98b2e062762871888835c7b608f1c41c3a77ad"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e40c35564081983eab6a07f9eb5693867bc447b0edf9c61b69446223d6593814"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d083cae02e344e760bd21c28d591ac5f7ddbd6e1a0ecba62092ae724abd5c28"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2fa9f4b382a6cf88f2f345044d0916a92f37cac21355585bd14bc7ee91af187"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:38855b06a124361dc73c198853dee3f2b775531c4f4b7472f0e3d441192b3d8a"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:a81067bdc015fee1cc148c79b346f24fdad1224a8898b4239c7cbdee1add8a60"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:409a39f92e123be061626fdfd3e76625b04db103479bb4ba1c85b587db0b9498"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a993610383028f093112dce7f77b262e88fce9d70127535fcdc78953179857e8"}, + {file = "setproctitle-1.2.3-cp36-cp36m-win32.whl", hash = "sha256:4eed53c12146de5df959d84384ffc2774651cab406ee4854e12728cf0eee5297"}, + {file = "setproctitle-1.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:335750c9eb5b18326a138a09266862a52b4f474277c3e410b419bea9a1df8bee"}, + {file = "setproctitle-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a72bbe53191fbe574c94c0f8b9451dce535b398b7c47ce2e26e21d55eaa1d7e"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5464e6812d050c986e6e9b97d54ab88c23dbe9d81151a2fa10b48bb5133a1e2c"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec7c3a27460ae7811e868e5494e3d8aee5012912744c48fa2d80b5e614b1b972"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01cef383afc7ea7a3b1696818c8712029bf2f1d64f5d4777dbaf0166becf2c00"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c7315e53b49ef2227d47a75c3d28c4c51ea9ee46a066460732c0d0f8e605a7"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0b444ed4051161a3b0a85dec2bb9b50922f37c75f5fb86f7784b235cf6754336"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:be0b46beeb1c92450079a7f30a025d69b63fd6a5de040ebc478fd6e6bf3b63fc"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:60f7a2f5da36a3075dda7edbee2173be5b765b0460b8d401ee01a11f68dee1d2"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:138bfa853e607f06d95b0f253e9152b32a00af3d0dbec96abf0871236a483932"}, + {file = "setproctitle-1.2.3-cp37-cp37m-win32.whl", hash = "sha256:e80fc59739a738b5c67afbbb9d1c238aa47b6d290c2ada872b15c819350ec5f8"}, + {file = "setproctitle-1.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a912df3f065572cef211e9ed9f157a0dd2bd73d150281f18f00728afa1b1e5d2"}, + {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d45dbe4171f8c27a515ecb4562f4cd9ef67d98474bea18e0c14dfbdc2b225050"}, + {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9d905ac84dde5227de6516ec08639759f99684148bb88ba05f4cbdaebff5d69"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f272b84d79bbe15af26ecf6f7c129bbe642f628866c9253659cdb519216f138f"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc586f002fd5dd8695718e22a83771fd9f744f081a2b8e614bf6b5f44135964a"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4051c3a3b07f8a4cca205cd45366a22f322da2f26491c0d6b313a10f8c77b734"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25538341e56f9e75e9759229ff674282dccb5b1ce79a974f968d36208d465674"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fdb2231db176e0848b757fc5d9bed08bc8a498b5b9abb8b640f39e9720f309fc"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0670f2130a7ca0e167d3d5a7c8e3c707340b8693d6af7416ff55c18ab2a0a43f"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9a92978030616f5e20617b7b832efee398df82072b7239c53db41c8026f5fe55"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28e0df80d5069586a08a3cb463fb23503a37cbb805826ef93164bc4bfb5f35b9"}, + {file = "setproctitle-1.2.3-cp38-cp38-win32.whl", hash = "sha256:35b869e416a105c59133a48b569c6e808159485d916f55e80c7394a42667a386"}, + {file = "setproctitle-1.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:f47f6704880869d8e8f52efac2f2f60f5ed4cb9662b98fc1c7e916eefe76e61d"}, + {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ccb0b5334dbf248f7504d88b5e9e9a09a0da119eeafacd6f7247f7c055443522"}, + {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14641a4ec2f2110cf4afc666eaecc82ba67814e927e02647fa1f4cf74476e752"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a3cb19346a0cd680617742f5e39fdd14596f6fd91d6c9038272663e37441b4"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2ac0ebd9c63c3d19f768966be2f771bf088bc7373c63ed6fcbb3444a30d0f62"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32a84cc309b9e595f06a55bec2fa335a23c307a55d2989864b60ecd71ea87897"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f55493c987935fa540ef9ffb7ee7db03b4a18a9d5cc103681e2e6a6dfbd7054"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f2a137984d3436f13e4bf7c8ca6f6f292df119c009c5e39556cabba4f4bfbf92"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f06ff922254023eaabef6af6631f89e5f2f420cf0112865d57d7703f933d4e9f"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:eb06c1086cf8c8cf12ce45a02450befcb408dfd646d0ccb47d388fd6e73c333a"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2c8c245e08f6a296fdaa1b36894ec40e20464a4fc6458e6178c8d55a2f83457a"}, + {file = "setproctitle-1.2.3-cp39-cp39-win32.whl", hash = "sha256:21d6e064b8fee4e58eb00cdd8771c638de1bc30bb6c02d0208af9ca0a1c00898"}, + {file = "setproctitle-1.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:efb3001fd9e71d3ae939d826bf436f0446fd30a6ac01e0ce08cd7eb55ee5ac57"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3dbe87e76197f9a303451512088c18c96f09a6fc4f871a92e5bd695f46f94a26"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b207de9e4f4aa5265b36dd826a1f6ef6566b064a042033bd7447efb7e9a7664"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ac48a94040ef21be37366cbc8270fcba2ca103d6c64da6099d5a7b034f72d0"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9fb5d2e66f94eebc3d06cda9e71a3fffef24c5273971180a4b5628a37fae05a5"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:423f8a6d8116acf975ebf93d6b5c4a752f7d2039fa9aafe175a62de86e17016e"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c0be45535e934deab3aa72ed1a8487174af4ea12cec124478c68a312e1c8b13"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65a9384cafdfed98f91416e93705ad08f049c298afcb9c515882beba23153bd0"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d312a170f539895c8093b5e68ba126aa131c9f0d00f6360410db27ec50bf7afa"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c93a2272740e60cddf59d3e1d35dbb89fcc3676f5ca9618bb4e6ae9633fdf13c"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f59444a25fb42ca07f53a4474b1545d97a06f016e6c6b8246eee5b146820b5"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06aab65e68163ead9d046b452dd9ad1fc6834ce6bde490f63fdce3be53e9cc73"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97accd117392b1e57e09888792750c403d7729b7e4b193005178b3736b325ea0"}, + {file = "setproctitle-1.2.3.tar.gz", hash = "sha256:ecf28b1c07a799d76f4326e508157b71aeda07b84b90368ea451c0710dbd32c0"}, +] setuptools-scm = [ {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, @@ -3250,6 +3437,10 @@ watchgod = [ {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, ] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] websockets = [ {file = "websockets-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc"}, {file = "websockets-10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60"}, @@ -3370,6 +3561,9 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] +xonsh = [ + {file = "xonsh-0.12.4.tar.gz", hash = "sha256:a3d394db471097762ecbdedcd35686efd1aac3b5885f614501403f6d09628a76"}, +] yapf = [ {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, diff --git a/pyproject.toml b/pyproject.toml index 048c2fb5..538de497 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -112,6 +112,7 @@ scalene = "^1.3.16" # ipython = "^7.16" # Enable pre commit hooks pre-commit = "^2.15" +xonsh = {extras = ["full"], version = "^0.12.4"} [tool.poetry.scripts] # Can be launched via 'poetry run python_examples_main' diff --git a/python_examples/templates/redirect_shell_output.sh b/python_examples/templates/redirect_shell_output.sh new file mode 100644 index 00000000..f4fb38a9 --- /dev/null +++ b/python_examples/templates/redirect_shell_output.sh @@ -0,0 +1,33 @@ +# To stdout example +echo 100 + +# To stdout example +cat file_doesnt_exist1 + +# Redirect stdout to stderr +echo 101 >&2 +echo 101 1>&2 + +# Redirect stderr to stdout +cat file_doesnt_exist2 2>&1 + +# Suppress stdout +echo 200 >/dev/null +>/dev/null echo 201 + +# Suppress stderr +cat file_doesnt_exist3 2>/dev/null +2>/dev/null cat file_doesnt_exist4 + +# Suppress both by redirecting stdout to stderr and stderr to /dev/null +echo 300 2>/dev/null >&2 +echo 301 2>/dev/null 1>&2 + +# Suppress both by redirecting stderr to stdout and stdout to /dev/null +cat file_doesnt_exist5 1>/dev/null 2>&1 +cat file_doesnt_exist6 >/dev/null 2>&1 +>/dev/null 2>&1 cat file_doesnt_exist7 + +# Suppress both by sending them both to /dev/null +cat file_doesnt_exist5 1>/dev/null 2>/dev/null +echo 400 1>/dev/null 2>/dev/null diff --git a/replay_comparer/package.json b/replay_comparer/package.json index 8bedae8d..6356bbc0 100644 --- a/replay_comparer/package.json +++ b/replay_comparer/package.json @@ -13,7 +13,7 @@ "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write --loglevel error ." + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ." }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^3.2.0", diff --git a/run_tests.xsh b/run_tests.xsh index a1854984..b09d8897 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -1,86 +1,174 @@ #!/usr/bin/env xonsh -# In CI: xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all -# For dev: xonsh run_tests.xsh run --pylint --npmlint -# For dev (slower): xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest +# In CI: +# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all +# For dev (only changed files): +# poetry run xonsh run_tests.xsh run --pylint --npmlint +# For dev (slower): +# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest from typing import List + +from xonsh.procs.pipelines import CommandPipeline from xonsh.tools import print_color import xonsh.cli_utils as xcli +import time -# $PATH.append($(pwd).strip()) -# print($PATH) - -python_projects = ["burny_common", "discord_bot", "fastapi_server", "python_examples"] -frontend_projects = ["bored_gems", "replay_comparer", "supabase_stream_scripts", "svelte_frontend"] changed_files: List[str] = $(git diff HEAD --name-only).splitlines() +python_files: List[str] = $(git ls-files '*.py').splitlines() +files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() -def has_changed_files(project_name: str) -> bool: - return any(project_name in file_name for file_name in changed_files) - -def format_and_lint_project(project_name: str, all_files: bool = False): - if all_files: - files = $(git ls-files '*.py').splitlines() - files_related_to_project = [file_name for file_name in files - if project_name in file_name] +def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name=''): + start_time = time.perf_counter() + location = $(pwd).strip() + command_as_line = " ".join(command) + end_of_line = "\r\n" if verbose else "\r" + print_command = display_name if display_name else f"{location} - {command_as_line}" + print_color(f"\r{{YELLOW}}RUNNING{{RESET}} - {print_command}", end=end_of_line) + if verbose: + ret: CommandPipeline = !(@(command)) else: - files_related_to_project = [file_name for file_name in changed_files - if project_name in file_name and file_name.endswith(".py")] - if not files_related_to_project: - return - # Autoformat - print_color(f"Running {{GREEN}}yapf{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}} on {len(files_related_to_project)} file(s)") - poetry run yapf --in-place @(files_related_to_project) - # Lint - print_color(f"Running {{GREEN}}pylint{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}} on {len(files_related_to_project)} file(s)") - poetry run python -m pylint @(files_related_to_project) - -def run_mypy(): - # Run mypy on all python files because types could have changed which can affect other files - python_files = $(git ls-files '*.py').splitlines() - print_color(f"Running {{GREEN}}mypy{{RESET}} on python files") - poetry run mypy @(python_files) + ret: CommandPipeline = !(@(command) 1>/dev/null 2>/dev/null) + while $(jobs): + time.sleep(0.1) + time_required: float = time.perf_counter() - start_time + if ignore_exit_status or ret.returncode == 0: + print_color(f"{time_required:.3f} {{GREEN}}SUCCESS{{RESET}} - {print_command}") + else: + print_color(f"{time_required:.3f} {{RED}}ERROR{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") + print_color(f"{{RED}}ERROR{{RESET}} Command executed in {location}:\n{command_as_line}") + # Run command again in verbose mode + @(command) def run( run_python_lint: xcli.Arg('--pylint', '-pl', action="store_true") = False, run_python_test: xcli.Arg('--pytest', '-pt', action="store_true") = False, run_npm_lint: xcli.Arg('--npmlint', '-nl', action="store_true") = False, run_npm_test: xcli.Arg('--npmtest', '-nt', action="store_true") = False, - run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = True, + run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = False, ): + if run_python_lint: + # Run mypy on all python files because types could have changed which can affect other files + command = "poetry run mypy".split() + python_files + run_command(command, display_name="Run mypy") + + # burny_common + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "burny_common" in file_name] + else: + files_related_to_project = [file_name for file_name in python_files if "burny_common" in file_name] + if files_related_to_project: + if run_python_lint: + run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on burny_common") + run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on burny_common") - if run_python_lint or run_python_test: + # discord_bot + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "discord_bot" in file_name] + else: + files_related_to_project = [file_name for file_name in python_files if "discord_bot" in file_name] + if files_related_to_project: if run_python_lint: - run_mypy() - for project_name in python_projects: - if run_only_changed_files and not has_changed_files(project_name): - continue - if run_python_lint: - format_and_lint_project(project_name, all_files=not run_only_changed_files) - if run_python_test: - poetry run python -m pytest @(project_name) - if project_name in ["fastapi_server", "discord_bot"]: - print_color(f"Building {{GREEN}}docker image{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}}") - cd @(project_name) - docker build --quiet --tag precommit_image . && docker rmi precommit_image - cd .. + run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on discord_bot") + run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on discord_bot") + if run_python_test: + run_command("poetry run python -m pytest discord_bot".split(), display_name="Run pytest on discord_bot") + cd discord_bot + run_command("docker build --quiet --tag precommit_image .".split(), display_name="Build docker image in discord_bot") + docker rmi precommit_image 1>/dev/null 2>/dev/null + cd .. - if run_npm_lint or run_npm_test: - for project_name in frontend_projects: - if run_only_changed_files and not has_changed_files(project_name): - continue - print_color(f"Running {{GREEN}}prettier, lint and tests{{RESET}} in project {{GREEN}}'{project_name}'{{RESET}}") - cd @(project_name) - if run_npm_lint and run_npm_test: - # Add npm run format - npm install && npm run lint && npm run build-precommit && npm run test - if run_npm_lint: - # npm run format # Fix me - npm install && npm run lint - elif run_npm_test: - npm install && npm run build-precommit && npm run test + # fastapi_server + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "fastapi_server" in file_name] + else: + files_related_to_project = [file_name for file_name in python_files if "fastapi_server" in file_name] + if files_related_to_project: + if run_python_lint: + run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on fastapi_server") + run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on fastapi_server") + if run_python_test: + run_command("poetry run python -m pytest fastapi_server".split(), display_name="Run pytest on fastapi_server") + cd fastapi_server + run_command("docker build --quiet --tag precommit_image .".split(), display_name="Build docker image in fastapi_server") + docker rmi precommit_image 1>/dev/null 2>/dev/null cd .. - if run_npm_test: - if project_name in ["svelte_frontend"]: - poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip + + # python_examples + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "python_examples" in file_name] + else: + files_related_to_project = [file_name for file_name in python_files if "python_examples" in file_name] + if files_related_to_project: + if run_python_lint: + run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on python_examples") + run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on python_examples") + if run_python_test: + run_command("poetry run python -m pytest python_examples".split(), display_name="Run pytest on python_examples") + + # bored_gems + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "bored_gems" in file_name] + else: + files_related_to_project = files_in_project("bored_gems") + if files_related_to_project: + cd bored_gems + npm install 1>/dev/null 2>/dev/null + if run_npm_lint: + run_command("npm run format".split()) + run_command("npm run lint".split()) + if run_npm_test: + run_command("npm run build".split()) + run_command("npm run test".split()) + cd .. + + # replay_comparer + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "replay_comparer" in file_name] + else: + files_related_to_project = files_in_project("replay_comparer") + if files_related_to_project: + cd replay_comparer + npm install 1>/dev/null 2>/dev/null + if run_npm_lint: + run_command("npm run format".split()) + run_command("npm run lint".split()) + if run_npm_test: + run_command("npm run build".split()) + run_command("npm run test".split()) + cd .. + + # supabase_stream_scripts + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "supabase_stream_scripts" in file_name] + else: + files_related_to_project = files_in_project("supabase_stream_scripts") + if files_related_to_project: + cd supabase_stream_scripts + npm install 1>/dev/null 2>/dev/null + if run_npm_lint: + run_command("npm run format".split()) + run_command("npm run lint".split()) + if run_npm_test: + run_command("npm run build".split()) + run_command("npm run test".split()) + cd .. + + # svelte_frontend + if run_only_changed_files: + files_related_to_project = [file_name for file_name in changed_files if "svelte_frontend" in file_name] + else: + files_related_to_project = files_in_project("svelte_frontend") + if files_related_to_project: + cd svelte_frontend + npm install 1>/dev/null 2>/dev/null + if run_npm_lint: + run_command("npm run format".split()) + run_command("npm run lint".split()) + if run_npm_test: + run_command("npm run build".split()) + run_command("npm run test".split()) + cd .. + if run_npm_test: + run_command("poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split()) if __name__ == '__main__': parser = xcli.make_parser("test commands") diff --git a/supabase_stream_scripts/package.json b/supabase_stream_scripts/package.json index c48a649c..2d649cec 100644 --- a/supabase_stream_scripts/package.json +++ b/supabase_stream_scripts/package.json @@ -11,7 +11,7 @@ "lint": "eslint src/**/*.{ts,svelte} --max-warnings 0", "update": "npx npm-check-updates -u && npm run prune", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", - "format": "prettier --write --loglevel error .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", "test": "jest" }, "devDependencies": { diff --git a/svelte_frontend/package.json b/svelte_frontend/package.json index 43206627..3d685772 100644 --- a/svelte_frontend/package.json +++ b/svelte_frontend/package.json @@ -11,7 +11,7 @@ "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "eslint --ignore-path .gitignore . --max-warnings 0", - "format": "prettier --write --loglevel error .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", "prune": "rm node_modules -rf && rm package-lock.json -f && npm i", "update": "npx npm-check-updates -u && npm run prune" }, From 5837b583706d051fcc585002a288d69ed85d9b51 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 16 Jun 2022 22:59:36 +0200 Subject: [PATCH 108/391] Improve output --- .github/workflows/check_python_code.yml | 2 +- .gitignore | 1 + run_tests.xsh | 88 ++++++++++++++----------- 3 files changed, 51 insertions(+), 40 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 0849dfa4..3ffd6dc7 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -50,4 +50,4 @@ jobs: - name: Format, lint and test run: | - poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all + poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all --verbose diff --git a/.gitignore b/.gitignore index ee9ca640..73b94632 100644 --- a/.gitignore +++ b/.gitignore @@ -115,6 +115,7 @@ venv.bak/ # Frontend build .svelte-kit +bored_gems/.netlify node_modules svelte_frontend/test_frontend/latest_logs svelte_frontend/latest_logs diff --git a/run_tests.xsh b/run_tests.xsh index b09d8897..8a69f9c2 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -1,6 +1,6 @@ #!/usr/bin/env xonsh # In CI: -# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all +# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all --verbose # For dev (only changed files): # poetry run xonsh run_tests.xsh run --pylint --npmlint # For dev (slower): @@ -16,13 +16,16 @@ changed_files: List[str] = $(git diff HEAD --name-only).splitlines() python_files: List[str] = $(git ls-files '*.py').splitlines() files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() +def remove_last_message(message: str) -> None: + print(" " * len(message), end="\r") + def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name=''): start_time = time.perf_counter() location = $(pwd).strip() command_as_line = " ".join(command) - end_of_line = "\r\n" if verbose else "\r" print_command = display_name if display_name else f"{location} - {command_as_line}" - print_color(f"\r{{YELLOW}}RUNNING{{RESET}} - {print_command}", end=end_of_line) + message = f"\r{{YELLOW}}RUNNING{{RESET}} - {print_command}" + print_color(message, end='\r') if verbose: ret: CommandPipeline = !(@(command)) else: @@ -31,24 +34,31 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis time.sleep(0.1) time_required: float = time.perf_counter() - start_time if ignore_exit_status or ret.returncode == 0: + remove_last_message(message) print_color(f"{time_required:.3f} {{GREEN}}SUCCESS{{RESET}} - {print_command}") else: + remove_last_message(message) print_color(f"{time_required:.3f} {{RED}}ERROR{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") print_color(f"{{RED}}ERROR{{RESET}} Command executed in {location}:\n{command_as_line}") - # Run command again in verbose mode - @(command) + if verbose: + print(f"STDOUT:\n{ret.out}\n") + print(f"STDERR:\n{ret.err}\n") + else: + # Run command again in verbose mode + @(command) def run( run_python_lint: xcli.Arg('--pylint', '-pl', action="store_true") = False, run_python_test: xcli.Arg('--pytest', '-pt', action="store_true") = False, run_npm_lint: xcli.Arg('--npmlint', '-nl', action="store_true") = False, run_npm_test: xcli.Arg('--npmtest', '-nt', action="store_true") = False, - run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = False, + run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = True, + verbose: xcli.Arg('--verbose', '-v', action="store_true") = False, ): if run_python_lint: # Run mypy on all python files because types could have changed which can affect other files command = "poetry run mypy".split() + python_files - run_command(command, display_name="Run mypy") + run_command(command, verbose=verbose, display_name="Run mypy") # burny_common if run_only_changed_files: @@ -57,8 +67,8 @@ def run( files_related_to_project = [file_name for file_name in python_files if "burny_common" in file_name] if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on burny_common") - run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on burny_common") + run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on burny_common") + run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on burny_common") # discord_bot if run_only_changed_files: @@ -67,13 +77,12 @@ def run( files_related_to_project = [file_name for file_name in python_files if "discord_bot" in file_name] if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on discord_bot") - run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on discord_bot") + run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on discord_bot") + run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on discord_bot") if run_python_test: - run_command("poetry run python -m pytest discord_bot".split(), display_name="Run pytest on discord_bot") + run_command("poetry run python -m pytest discord_bot".split(), verbose=verbose, display_name="Run pytest on discord_bot") cd discord_bot - run_command("docker build --quiet --tag precommit_image .".split(), display_name="Build docker image in discord_bot") - docker rmi precommit_image 1>/dev/null 2>/dev/null + run_command("docker build --tag precommit_image_discord_bot .".split(), verbose=verbose, display_name="Build docker image in discord_bot") cd .. # fastapi_server @@ -83,13 +92,12 @@ def run( files_related_to_project = [file_name for file_name in python_files if "fastapi_server" in file_name] if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on fastapi_server") - run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on fastapi_server") + run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on fastapi_server") + run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on fastapi_server") if run_python_test: - run_command("poetry run python -m pytest fastapi_server".split(), display_name="Run pytest on fastapi_server") + run_command("poetry run python -m pytest fastapi_server".split(), verbose=verbose, display_name="Run pytest on fastapi_server") cd fastapi_server - run_command("docker build --quiet --tag precommit_image .".split(), display_name="Build docker image in fastapi_server") - docker rmi precommit_image 1>/dev/null 2>/dev/null + run_command("docker build --tag precommit_image_fastapi_server .".split(), verbose=verbose, display_name="Build docker image in fastapi_server") cd .. # python_examples @@ -99,10 +107,10 @@ def run( files_related_to_project = [file_name for file_name in python_files if "python_examples" in file_name] if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, display_name="Run yapf on python_examples") - run_command("poetry run pylint".split() + files_related_to_project, display_name="Run pylint on python_examples") + run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on python_examples") + run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on python_examples") if run_python_test: - run_command("poetry run python -m pytest python_examples".split(), display_name="Run pytest on python_examples") + run_command("poetry run python -m pytest python_examples".split(), verbose=verbose, display_name="Run pytest on python_examples") # bored_gems if run_only_changed_files: @@ -112,12 +120,13 @@ def run( if files_related_to_project: cd bored_gems npm install 1>/dev/null 2>/dev/null + npx playwright install 1>/dev/null 2>/dev/null if run_npm_lint: - run_command("npm run format".split()) - run_command("npm run lint".split()) + run_command("npm run format".split(), verbose=verbose) + run_command("npm run lint".split(), verbose=verbose) if run_npm_test: - run_command("npm run build".split()) - run_command("npm run test".split()) + run_command("npm run build".split(), verbose=verbose) + run_command("npm run test".split(), verbose=verbose) cd .. # replay_comparer @@ -129,11 +138,11 @@ def run( cd replay_comparer npm install 1>/dev/null 2>/dev/null if run_npm_lint: - run_command("npm run format".split()) - run_command("npm run lint".split()) + run_command("npm run format".split(), verbose=verbose) + run_command("npm run lint".split(), verbose=verbose) if run_npm_test: - run_command("npm run build".split()) - run_command("npm run test".split()) + run_command("npm run build".split(), verbose=verbose) + run_command("npm run test".split(), verbose=verbose) cd .. # supabase_stream_scripts @@ -145,11 +154,11 @@ def run( cd supabase_stream_scripts npm install 1>/dev/null 2>/dev/null if run_npm_lint: - run_command("npm run format".split()) - run_command("npm run lint".split()) + run_command("npm run format".split(), verbose=verbose) + run_command("npm run lint".split(), verbose=verbose) if run_npm_test: - run_command("npm run build".split()) - run_command("npm run test".split()) + run_command("npm run build".split(), verbose=verbose) + run_command("npm run test".split(), verbose=verbose) cd .. # svelte_frontend @@ -160,15 +169,16 @@ def run( if files_related_to_project: cd svelte_frontend npm install 1>/dev/null 2>/dev/null + npx playwright install 1>/dev/null 2>/dev/null if run_npm_lint: - run_command("npm run format".split()) - run_command("npm run lint".split()) + run_command("npm run format".split(), verbose=verbose) + run_command("npm run lint".split(), verbose=verbose) if run_npm_test: - run_command("npm run build".split()) - run_command("npm run test".split()) + run_command("npm run build".split(), verbose=verbose) + run_command("npm run test".split(), verbose=verbose) cd .. if run_npm_test: - run_command("poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split()) + run_command("poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split(), verbose=verbose) if __name__ == '__main__': parser = xcli.make_parser("test commands") From 8de4b3d20ff0ad361028a2141f1fcf18796d62d3 Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 16 Jun 2022 23:22:48 +0200 Subject: [PATCH 109/391] Add playwright install --- .github/workflows/check_python_code.yml | 1 + run_tests.xsh | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 3ffd6dc7..90fdb18f 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -6,6 +6,7 @@ on: paths: - ./**/*.py - .github/workflows/check_python_code.yml + - run_tests.xsh pull_request: branches: - master diff --git a/run_tests.xsh b/run_tests.xsh index 8a69f9c2..733baa54 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -6,20 +6,22 @@ # For dev (slower): # poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest from typing import List - from xonsh.procs.pipelines import CommandPipeline from xonsh.tools import print_color import xonsh.cli_utils as xcli import time +import sys changed_files: List[str] = $(git diff HEAD --name-only).splitlines() python_files: List[str] = $(git ls-files '*.py').splitlines() files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() +ANY_COMMAND_HAS_ERROR = False def remove_last_message(message: str) -> None: print(" " * len(message), end="\r") -def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name=''): +def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name='') -> int: + global ANY_COMMAND_HAS_ERROR start_time = time.perf_counter() location = $(pwd).strip() command_as_line = " ".join(command) @@ -30,7 +32,7 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis ret: CommandPipeline = !(@(command)) else: ret: CommandPipeline = !(@(command) 1>/dev/null 2>/dev/null) - while $(jobs): + while $(jobs): # Without this, time.perf_counter() doesnt seem to work properly time.sleep(0.1) time_required: float = time.perf_counter() - start_time if ignore_exit_status or ret.returncode == 0: @@ -46,6 +48,11 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis else: # Run command again in verbose mode @(command) + if ignore_exit_status: + return 0 + if ret.returncode != 0: + ANY_COMMAND_HAS_ERROR = True + return ret.returncode def run( run_python_lint: xcli.Arg('--pylint', '-pl', action="store_true") = False, @@ -121,6 +128,7 @@ def run( cd bored_gems npm install 1>/dev/null 2>/dev/null npx playwright install 1>/dev/null 2>/dev/null + playwright install 1>/dev/null 2>/dev/null if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -170,6 +178,7 @@ def run( cd svelte_frontend npm install 1>/dev/null 2>/dev/null npx playwright install 1>/dev/null 2>/dev/null + playwright install 1>/dev/null 2>/dev/null if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -184,3 +193,6 @@ if __name__ == '__main__': parser = xcli.make_parser("test commands") parser.add_command(run) xcli.dispatch(parser) + if ANY_COMMAND_HAS_ERROR: + sys.exit(1) + From a8aea2da5d6e23bd28c7202c5b95958b243cca3d Mon Sep 17 00:00:00 2001 From: burny Date: Thu, 16 Jun 2022 23:51:26 +0200 Subject: [PATCH 110/391] Add init file to fix pylint --- discord_bot/Dockerfile | 3 +++ discord_bot/__init__.py | 0 discord_bot/main.py | 4 ++-- discord_bot/test/test_mmr.py | 8 -------- discord_bot/test/test_remind_at.py | 8 -------- discord_bot/test/test_remind_in.py | 8 -------- run_tests.xsh | 20 ++++++++++---------- 7 files changed, 15 insertions(+), 36 deletions(-) create mode 100644 discord_bot/__init__.py diff --git a/discord_bot/Dockerfile b/discord_bot/Dockerfile index da8c77dd..653e9643 100644 --- a/discord_bot/Dockerfile +++ b/discord_bot/Dockerfile @@ -10,6 +10,9 @@ RUN pip install poetry --no-cache-dir \ ADD . /root/discord_bot +# Allow imports like 'from discord_bot.commands.public_remind import Remind' +ENV PYTHONPATH "${PYTHONPATH}:/root" + CMD ["poetry", "run", "python", "main.py"] # See run.sh diff --git a/discord_bot/__init__.py b/discord_bot/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/discord_bot/main.py b/discord_bot/main.py index 5103928c..81c0ce2c 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -3,8 +3,8 @@ from pathlib import Path from typing import AsyncIterable, Awaitable, Callable, Union -from commands.public_mmr import public_mmr -from commands.public_remind import Remind +from discord_bot.commands.public_mmr import public_mmr +from discord_bot.commands.public_remind import Remind from hikari import ( Embed, GatewayBot, diff --git a/discord_bot/test/test_mmr.py b/discord_bot/test/test_mmr.py index f7bdcb0b..dac9935e 100644 --- a/discord_bot/test/test_mmr.py +++ b/discord_bot/test/test_mmr.py @@ -1,11 +1,3 @@ -import sys -from pathlib import Path - -try: - sys.path.append(str(Path(__file__).parents[2])) -except IndexError: - pass - import pytest from discord_bot.commands.public_mmr import Sc2LadderResult diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py index ff7391ea..412e103a 100644 --- a/discord_bot/test/test_remind_at.py +++ b/discord_bot/test/test_remind_at.py @@ -1,11 +1,3 @@ -import sys -from pathlib import Path - -try: - sys.path.append(str(Path(__file__).parents[2])) -except IndexError: - pass - import asyncio import arrow diff --git a/discord_bot/test/test_remind_in.py b/discord_bot/test/test_remind_in.py index 94ed9da0..b06b38a2 100644 --- a/discord_bot/test/test_remind_in.py +++ b/discord_bot/test/test_remind_in.py @@ -1,11 +1,3 @@ -import sys -from pathlib import Path - -try: - sys.path.append(str(Path(__file__).parents[2])) -except IndexError: - pass - import random import arrow diff --git a/run_tests.xsh b/run_tests.xsh index 733baa54..c63ee601 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -40,8 +40,8 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis print_color(f"{time_required:.3f} {{GREEN}}SUCCESS{{RESET}} - {print_command}") else: remove_last_message(message) - print_color(f"{time_required:.3f} {{RED}}ERROR{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") - print_color(f"{{RED}}ERROR{{RESET}} Command executed in {location}:\n{command_as_line}") + print_color(f"{time_required:.3f} {{RED}}FAILURE{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") + print_color(f"{{RED}}FAILURE{{RESET}} Command executed in {location}:\n{command_as_line}") if verbose: print(f"STDOUT:\n{ret.out}\n") print(f"STDERR:\n{ret.err}\n") @@ -69,9 +69,9 @@ def run( # burny_common if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "burny_common" in file_name] + files_related_to_project = [file_name for file_name in changed_files if "burny_common" in file_name and file_name.endswith(".py")] else: - files_related_to_project = [file_name for file_name in python_files if "burny_common" in file_name] + files_related_to_project = [file_name for file_name in python_files if "burny_common" in file_name and file_name.endswith(".py")] if files_related_to_project: if run_python_lint: run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on burny_common") @@ -79,9 +79,9 @@ def run( # discord_bot if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "discord_bot" in file_name] + files_related_to_project = [file_name for file_name in changed_files if "discord_bot" in file_name and file_name.endswith(".py")] else: - files_related_to_project = [file_name for file_name in python_files if "discord_bot" in file_name] + files_related_to_project = [file_name for file_name in python_files if "discord_bot" in file_name and file_name.endswith(".py")] if files_related_to_project: if run_python_lint: run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on discord_bot") @@ -94,9 +94,9 @@ def run( # fastapi_server if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "fastapi_server" in file_name] + files_related_to_project = [file_name for file_name in changed_files if "fastapi_server" in file_name and file_name.endswith(".py")] else: - files_related_to_project = [file_name for file_name in python_files if "fastapi_server" in file_name] + files_related_to_project = [file_name for file_name in python_files if "fastapi_server" in file_name and file_name.endswith(".py")] if files_related_to_project: if run_python_lint: run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on fastapi_server") @@ -109,9 +109,9 @@ def run( # python_examples if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "python_examples" in file_name] + files_related_to_project = [file_name for file_name in changed_files if "python_examples" in file_name and file_name.endswith(".py")] else: - files_related_to_project = [file_name for file_name in python_files if "python_examples" in file_name] + files_related_to_project = [file_name for file_name in python_files if "python_examples" in file_name and file_name.endswith(".py")] if files_related_to_project: if run_python_lint: run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on python_examples") From 8ebd2ff3c15b8d6639bf22b230bf7ea878844d1a Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 17 Jun 2022 00:40:23 +0200 Subject: [PATCH 111/391] Fix remind_at test case, add discord launch test --- discord_bot/main.py | 20 +++++++++-------- discord_bot/run.sh | 2 +- discord_bot/test/test_bot.py | 15 +++++++++++++ discord_bot/test/test_remind_at.py | 3 ++- fastapi_server/main.py | 9 -------- .../discrete_structures/test_permutations.py | 5 ----- python_examples/main.py | 22 ++++--------------- run_tests.xsh | 10 ++++++--- 8 files changed, 40 insertions(+), 46 deletions(-) create mode 100644 discord_bot/test/test_bot.py diff --git a/discord_bot/main.py b/discord_bot/main.py index 81c0ce2c..337aac8a 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -3,8 +3,6 @@ from pathlib import Path from typing import AsyncIterable, Awaitable, Callable, Union -from discord_bot.commands.public_mmr import public_mmr -from discord_bot.commands.public_remind import Remind from hikari import ( Embed, GatewayBot, @@ -16,13 +14,17 @@ ) from loguru import logger -# Load key and start bot -DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' -assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" -with DISCORDKEY_PATH.open() as f: - token = f.read() - os.environ['DISCORDKEY'] = token.strip() - del token +from discord_bot.commands.public_mmr import public_mmr +from discord_bot.commands.public_remind import Remind + +# Load key from file if it does not exist in env +if os.getenv('DISCORDKEY') is None: + DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' + assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" + with DISCORDKEY_PATH.open() as f: + token = f.read() + os.environ['DISCORDKEY'] = token.strip() + del token bot = GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore PREFIX = '!' diff --git a/discord_bot/run.sh b/discord_bot/run.sh index 8b86dae4..08099346 100644 --- a/discord_bot/run.sh +++ b/discord_bot/run.sh @@ -1,5 +1,5 @@ docker build -t discord_bot_image . docker run --rm --name discord_bot \ --mount type=bind,source="$(pwd)/data",destination=/root/discord_bot/data \ - --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ discord_bot_image +# --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ diff --git a/discord_bot/test/test_bot.py b/discord_bot/test/test_bot.py new file mode 100644 index 00000000..a481bd83 --- /dev/null +++ b/discord_bot/test/test_bot.py @@ -0,0 +1,15 @@ +import os +from unittest.mock import AsyncMock, patch + +from hikari import GatewayBot + +# Set key before bot import +os.environ['DISCORDKEY'] = 'test_key' +from discord_bot.main import bot + + +def test_start_bot(): + # This test should fail if the bot can't launch at all + with patch.object(GatewayBot, 'start', new=AsyncMock()): + with patch.object(GatewayBot, 'join', new=AsyncMock()): + bot.run() diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py index 412e103a..747645f5 100644 --- a/discord_bot/test/test_remind_at.py +++ b/discord_bot/test/test_remind_at.py @@ -86,6 +86,7 @@ async def test_parsing_date_and_time_from_message_success(_year, _month, _day, _ st.text(min_size=1), ) @example(2021, 4, 20, 4, 20, 00, 'remind me of this') +@example(0, 1, 1, 24, 0, 0, 'remind me of this') def test_parsing_date_and_time_from_message_failure(_year, _month, _day, _hour, _minute, _second, _message): if not _message.strip(): return @@ -129,7 +130,7 @@ def test_parsing_date_and_time_from_message_failure(_year, _month, _day, _hour, assert result is None # Invalid hour - if not 0 <= _hour < 24: + if not 0 <= _hour <= 24: assert result is None # Invalid minute if not 0 <= _minute < 60: diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 03d5807b..38439f18 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -1,12 +1,3 @@ -import sys -from pathlib import Path - -# Be able to launch from root folder -try: - sys.path.append(str(Path(__file__).parents[1])) -except IndexError: - pass - import os from typing import Literal diff --git a/python_examples/discrete_structures/test_permutations.py b/python_examples/discrete_structures/test_permutations.py index 3f924801..d37f1aea 100644 --- a/python_examples/discrete_structures/test_permutations.py +++ b/python_examples/discrete_structures/test_permutations.py @@ -1,8 +1,3 @@ -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), '..')) - from python_examples.discrete_structures.permutation import _test_permutations diff --git a/python_examples/main.py b/python_examples/main.py index bcc5f405..537da57f 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -1,27 +1,13 @@ -import sys -from pathlib import Path - -# Be able to launch from root folder -try: - sys.path.append(str(Path(__file__).parents[1])) -except IndexError: - pass - -# Other -# Coroutines and multiprocessing import asyncio +import sys import time +from pathlib import Path from platform import platform - -# Type annotation / hints from typing import List import aiohttp - -# Simple logging https://github.com/Delgan/loguru from loguru import logger -# Local examples from python_examples.examples.async_await.asyncio_download_upload import download_all_sites, download_file from python_examples.examples.async_await.rate_limited_example import api_rate_limited_example from python_examples.examples.databases.mongodb_example import test_database_with_mongodb @@ -54,8 +40,8 @@ logger.remove() # Remove previous default handlers # Log to console logger.add(sys.stdout, level='INFO') -# Log to file, max size 1 mb, max log file age 7 days before a new one gets created -logger.add('main.log', rotation='1 MB', retention='7 days', level='INFO') +# Log to file +logger.add('main.log', level='INFO') def main_sync(): diff --git a/run_tests.xsh b/run_tests.xsh index c63ee601..417dcc3f 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -48,8 +48,6 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis else: # Run command again in verbose mode @(command) - if ignore_exit_status: - return 0 if ret.returncode != 0: ANY_COMMAND_HAS_ERROR = True return ret.returncode @@ -62,6 +60,7 @@ def run( run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = True, verbose: xcli.Arg('--verbose', '-v', action="store_true") = False, ): + global ANY_COMMAND_HAS_ERROR if run_python_lint: # Run mypy on all python files because types could have changed which can affect other files command = "poetry run mypy".split() + python_files @@ -104,7 +103,12 @@ def run( if run_python_test: run_command("poetry run python -m pytest fastapi_server".split(), verbose=verbose, display_name="Run pytest on fastapi_server") cd fastapi_server - run_command("docker build --tag precommit_image_fastapi_server .".split(), verbose=verbose, display_name="Build docker image in fastapi_server") + run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose, display_name="Build docker image in fastapi_server") + # Check if the server can start at all + docker build --tag burnysc2/fastapi_server:latest . 1>/dev/null 2>/dev/null + returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, display_name="Run fastapi_server for 5 seconds") + if returncode == 124: + ANY_COMMAND_HAS_ERROR = True cd .. # python_examples From 4af690aece653fe50327d0b999ca4e0e57bfde83 Mon Sep 17 00:00:00 2001 From: burny Date: Fri, 17 Jun 2022 23:18:19 +0200 Subject: [PATCH 112/391] Add supabase async client --- .github/workflows/check_python_code.yml | 2 +- .gitignore | 2 + discord_bot/db.py | 27 + discord_bot/poetry.lock | 942 +++++++++++++++++++++++- discord_bot/pyproject.toml | 2 + discord_bot/supabase_async_client.py | 199 +++++ poetry.lock | 811 +++++++++++++------- pyproject.toml | 6 +- run_tests.xsh | 2 +- 9 files changed, 1704 insertions(+), 289 deletions(-) create mode 100644 discord_bot/db.py create mode 100644 discord_bot/supabase_async_client.py diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 90fdb18f..56eba2a2 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -34,7 +34,7 @@ jobs: - name: Install poetry and xonsh run: | - pip install poetry + pip install poetry xonsh[full] - name: Make poetry use local .venv folder run: poetry config virtualenvs.in-project true diff --git a/.gitignore b/.gitignore index 73b94632..47753cd8 100644 --- a/.gitignore +++ b/.gitignore @@ -135,4 +135,6 @@ fastapi_server/data # Discord bot files /discord_bot/DISCORDKEY +/discord_bot/SUPABASEURL +/discord_bot/SUPABASEKEY /discord_bot/data/ diff --git a/discord_bot/db.py b/discord_bot/db.py new file mode 100644 index 00000000..6af77ca1 --- /dev/null +++ b/discord_bot/db.py @@ -0,0 +1,27 @@ +import asyncio +from pathlib import Path + +from postgrest import APIResponse + +from discord_bot.supabase_async_client import Client, create_client + +with (Path(__file__).parent / 'SUPABASEURL').open('r') as f: + url: str = f.read().strip() +with (Path(__file__).parent / 'SUPABASEKEY').open('r') as f: + key: str = f.read().strip() + +supabase: Client = create_client(url, key) + + +async def main(): + response: APIResponse = await supabase.table('sc2accounts').select('*').execute() + + for row in response.data: + print(row) + + # End session + await supabase.postgrest.aclose() + + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/discord_bot/poetry.lock b/discord_bot/poetry.lock index ed17fe80..348b1fdb 100644 --- a/discord_bot/poetry.lock +++ b/discord_bot/poetry.lock @@ -30,26 +30,32 @@ python-versions = ">=3.6" frozenlist = ">=1.1.0" [[package]] -name = "arrow" -version = "1.2.2" -description = "Better dates & times for Python" +name = "anyio" +version = "3.6.1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.2" [package.dependencies] -python-dateutil = ">=2.7.0" +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] [[package]] -name = "asgiref" -version = "3.5.2" -description = "ASGI specs, helper code, and adapters" +name = "arrow" +version = "1.2.2" +description = "Better dates & times for Python" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" -[package.extras] -tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] +[package.dependencies] +python-dateutil = ">=2.7.0" [[package]] name = "async-timeout" @@ -81,6 +87,41 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +[[package]] +name = "bleach" +version = "5.0.0" +description = "An easy safelist-based HTML-sanitizing tool." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0)"] +dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] + +[[package]] +name = "certifi" +version = "2022.6.15" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "2.0.12" @@ -103,6 +144,17 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-log" +version = "0.4.0" +description = "Logging integration for Click" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" + [[package]] name = "colorama" version = "0.4.4" @@ -125,6 +177,55 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +[[package]] +name = "cryptography" +version = "37.0.2" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools_rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] + +[[package]] +name = "deprecation" +version = "2.1.0" +description = "A library to handle automated deprecations" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +packaging = "*" + +[[package]] +name = "docutils" +version = "0.18.1" +description = "Docutils -- Python Documentation Utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "dotty-dict" +version = "1.3.0" +description = "Dictionary wrapper for quick access to deeply nested keys." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +setuptools_scm = "*" + [[package]] name = "frozenlist" version = "1.3.0" @@ -133,9 +234,43 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.27" +description = "GitPython is a python library used to interact with Git repositories" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "gotrue" +version = "0.5.0" +description = "Python Client Library for GoTrue" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +httpx = ">=0.21.3,<0.22.0" +pydantic = ">=1.9.0,<2.0.0" + [[package]] name = "h11" -version = "0.13.0" +version = "0.12.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" category = "main" optional = false @@ -159,6 +294,44 @@ multidict = ">=6.0,<7.0" server = ["pynacl (>=1.5,<2.0)"] speedups = ["aiodns (>=3.0,<4.0)", "cchardet (>=2.1,<3.0)", "Brotli (>=1.0,<2.0)", "ciso8601 (>=2.2,<3.0)"] +[[package]] +name = "httpcore" +version = "0.14.7" +description = "A minimal low-level HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +anyio = ">=3.0.0,<4.0.0" +certifi = "*" +h11 = ">=0.11,<0.13" +sniffio = ">=1.0.0,<2.0.0" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] + +[[package]] +name = "httpx" +version = "0.21.3" +description = "The next generation HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +certifi = "*" +charset-normalizer = "*" +httpcore = ">=0.14.0,<0.15.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotlicffi", "brotli"] +cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10.0.0,<11.0.0)", "pygments (>=2.0.0,<3.0.0)"] +http2 = ["h2 (>=3,<5)"] + [[package]] name = "hypothesis" version = "6.47.0" @@ -195,6 +368,22 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "importlib-metadata" +version = "4.11.4" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + [[package]] name = "iniconfig" version = "1.1.1" @@ -203,6 +392,44 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "invoke" +version = "1.7.1" +description = "Pythonic task execution" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "jeepney" +version = "0.8.0" +description = "Low-level, pure Python DBus protocol wrapper." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest", "pytest-trio", "pytest-asyncio (>=0.17)", "testpath", "trio", "async-timeout"] +trio = ["trio", "async-generator"] + +[[package]] +name = "keyring" +version = "23.6.0" +description = "Store and access your passwords safely." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} +pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} +SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + [[package]] name = "loguru" version = "0.6.0" @@ -230,13 +457,24 @@ python-versions = ">=3.7" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "pkginfo" +version = "1.8.3" +description = "Query metadatdata from sdists / bdists / installed packages." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.extras] +testing = ["nose", "coverage"] + [[package]] name = "pluggy" version = "1.0.0" @@ -249,6 +487,19 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "postgrest-py" +version = "0.10.2" +description = "PostgREST client for Python. This library provides an ORM interface to PostgREST." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +deprecation = ">=2.1.0,<3.0.0" +httpx = ">=0.20,<0.23" +pydantic = ">=1.9.0,<2.0.0" + [[package]] name = "ptable" version = "0.9.2" @@ -265,11 +516,42 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydantic" +version = "1.9.1" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +typing-extensions = ">=3.7.4.3" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pygments" +version = "2.12.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" +category = "main" optional = false python-versions = ">=3.6.8" @@ -322,6 +604,163 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" [package.dependencies] six = ">=1.5" +[[package]] +name = "python-gitlab" +version = "3.5.0" +description = "Interact with GitLab API" +category = "main" +optional = false +python-versions = ">=3.7.0" + +[package.dependencies] +requests = ">=2.25.0" +requests-toolbelt = ">=0.9.1" + +[package.extras] +autocompletion = ["argcomplete (>=1.10.0,<3)"] +yaml = ["PyYaml (>=5.2)"] + +[[package]] +name = "python-semantic-release" +version = "7.28.1" +description = "Automatic Semantic Versioning for Python projects" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = ">=7,<9" +click-log = ">=0.3,<1" +dotty-dict = ">=1.3.0,<2" +gitpython = ">=3.0.8,<4" +invoke = ">=1.4.1,<2" +python-gitlab = ">=2,<4" +requests = ">=2.25,<3" +semver = ">=2.10,<3" +tomlkit = ">=0.10.0,<0.11.0" +twine = ">=3,<4" + +[package.extras] +dev = ["tox", "isort", "black"] +docs = ["Sphinx (==1.3.6)"] +mypy = ["mypy", "types-requests"] +test = ["coverage (>=5,<6)", "pytest (>=5,<6)", "pytest-xdist (>=1,<2)", "pytest-mock (>=2,<3)", "responses (==0.13.3)", "mock (==1.3.0)"] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.0" +description = "" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "readme-renderer" +version = "35.0" +description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +bleach = ">=2.1.0" +docutils = ">=0.13.1" +Pygments = ">=2.5.1" + +[package.extras] +md = ["cmarkgfm (>=0.8.0)"] + +[[package]] +name = "realtime" +version = "0.0.4" +description = "" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +python-dateutil = ">=2.8.1,<3.0.0" +websockets = ">=9.1,<10.0" + +[[package]] +name = "requests" +version = "2.28.0" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2.0.0,<2.1.0" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] +name = "requests-toolbelt" +version = "0.9.1" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "secretstorage" +version = "3.3.2" +description = "Python bindings to FreeDesktop.org Secret Service API" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cryptography = ">=2.0" +jeepney = ">=0.6" + +[[package]] +name = "semver" +version = "2.13.0" +description = "Python helper for Semantic Versioning (http://semver.org/)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "setuptools-scm" +version = "6.4.2" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +packaging = ">=20.0" +tomli = ">=1.0.0" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] + [[package]] name = "six" version = "1.16.0" @@ -330,6 +769,22 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.5" + [[package]] name = "sortedcontainers" version = "2.4.0" @@ -338,6 +793,34 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "storage3" +version = "0.3.4" +description = "Supabase Storage client for Python." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +httpx = ">=0.19,<0.22" +typing-extensions = ">=4.2.0,<5.0.0" + +[[package]] +name = "supabase" +version = "0.5.7" +description = "Supabase client for Python." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +gotrue = ">=0.5.0,<0.6.0" +httpx = ">=0.21.3,<0.22.0" +postgrest-py = ">=0.10.2,<0.11.0" +python-semantic-release = "7.28.1" +realtime = ">=0.0.4,<0.0.5" +storage3 = ">=0.3.1,<0.4.0" + [[package]] name = "toml" version = "0.10.2" @@ -347,20 +830,94 @@ optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] -name = "uvicorn" -version = "0.17.6" -description = "The lightning-fast ASGI server." +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.10.2" +description = "Style preserving TOML library" +category = "main" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "tqdm" +version = "4.64.0" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + [package.dependencies] -asgiref = ">=3.4.0" -click = ">=7.0" -h11 = ">=0.8" +colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "twine" +version = "3.8.0" +description = "Collection of utilities for publishing packages on PyPI" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = ">=0.4.3" +importlib-metadata = ">=3.6" +keyring = ">=15.1" +pkginfo = ">=1.8.1" +readme-renderer = ">=21.0" +requests = ">=2.20" +requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" +rfc3986 = ">=1.4.0" +tqdm = ">=4.14" +urllib3 = ">=1.26.0" + +[[package]] +name = "typing-extensions" +version = "4.2.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "urllib3" +version = "1.26.9" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "websockets" +version = "9.1" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" +optional = false +python-versions = ">=3.6.1" [[package]] name = "win32-setctime" @@ -385,10 +942,22 @@ python-versions = ">=3.6" idna = ">=2.0" multidict = ">=4.0" +[[package]] +name = "zipp" +version = "3.8.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "1e9c5352a8d0d7bdfb37867267990f626412f77443eca16b2ff7175ebbe8e91d" +content-hash = "d8d60eb67472f8ffb97e08dc9ca511ae06753788df3058cfe29d56e5a29704e1" [metadata.files] aiohttp = [ @@ -469,14 +1038,14 @@ aiosignal = [ {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, ] +anyio = [ + {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, + {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, +] arrow = [ {file = "arrow-1.2.2-py3-none-any.whl", hash = "sha256:d622c46ca681b5b3e3574fcb60a04e5cc81b9625112d5fb2b44220c36c892177"}, {file = "arrow-1.2.2.tar.gz", hash = "sha256:05caf1fd3d9a11a1135b2b6f09887421153b94558e5ef4d090b567b47173ac2b"}, ] -asgiref = [ - {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, - {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, -] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, @@ -489,6 +1058,66 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +bleach = [ + {file = "bleach-5.0.0-py3-none-any.whl", hash = "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1"}, + {file = "bleach-5.0.0.tar.gz", hash = "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565"}, +] +certifi = [ + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, +] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, @@ -497,6 +1126,10 @@ click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] +click-log = [ + {file = "click-log-0.4.0.tar.gz", hash = "sha256:3970f8570ac54491237bcdb3d8ab5e3eef6c057df29f8c3d1151a51a9c23b975"}, + {file = "click_log-0.4.0-py2.py3-none-any.whl", hash = "sha256:a43e394b528d52112af599f2fc9e4b7cf3c15f94e53581f74fa6867e68c91756"}, +] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, @@ -505,6 +1138,41 @@ colorlog = [ {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"}, ] +cryptography = [ + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3c81599befb4d4f3d7648ed3217e00d21a9341a9a688ecdd615ff72ffbed7336"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2bd1096476aaac820426239ab534b636c77d71af66c547b9ddcd76eb9c79e004"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:31fe38d14d2e5f787e0aecef831457da6cec68e0bb09a35835b0b44ae8b988fe"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:093cb351031656d3ee2f4fa1be579a8c69c754cf874206be1d4cf3b542042804"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59b281eab51e1b6b6afa525af2bd93c16d49358404f814fe2c2410058623928c"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:0cc20f655157d4cfc7bada909dc5cc228211b075ba8407c46467f63597c78178"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f8ec91983e638a9bcd75b39f1396e5c0dc2330cbd9ce4accefe68717e6779e0a"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:46f4c544f6557a2fefa7ac8ac7d1b17bf9b647bd20b16decc8fbcab7117fbc15"}, + {file = "cryptography-37.0.2-cp36-abi3-win32.whl", hash = "sha256:731c8abd27693323b348518ed0e0705713a36d79fdbd969ad968fbef0979a7e0"}, + {file = "cryptography-37.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:471e0d70201c069f74c837983189949aa0d24bb2d751b57e26e3761f2f782b8d"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a68254dd88021f24a68b613d8c51d5c5e74d735878b9e32cc0adf19d1f10aaf9"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:a7d5137e556cc0ea418dca6186deabe9129cee318618eb1ffecbd35bee55ddc1"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aeaba7b5e756ea52c8861c133c596afe93dd716cbcacae23b80bc238202dc023"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95e590dd70642eb2079d280420a888190aa040ad20f19ec8c6e097e38aa29e06"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1b9362d34363f2c71b7853f6251219298124aa4cc2075ae2932e64c91a3e2717"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e53258e69874a306fcecb88b7534d61820db8a98655662a3dd2ec7f1afd9132f"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:1f3bfbd611db5cb58ca82f3deb35e83af34bb8cf06043fa61500157d50a70982"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:419c57d7b63f5ec38b1199a9521d77d7d1754eb97827bbb773162073ccd8c8d4"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:dc26bb134452081859aa21d4990474ddb7e863aa39e60d1592800a8865a702de"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452"}, + {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, +] +deprecation = [ + {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, + {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, +] +docutils = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] +dotty-dict = [ + {file = "dotty_dict-1.3.0.tar.gz", hash = "sha256:eb0035a3629ecd84397a68f1f42f1e94abd1c34577a19cd3eacad331ee7cbaf0"}, +] frozenlist = [ {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, @@ -566,14 +1234,34 @@ frozenlist = [ {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, ] +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +gitpython = [ + {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, + {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, +] +gotrue = [ + {file = "gotrue-0.5.0-py3-none-any.whl", hash = "sha256:ed81289fd6a542caa05e6ab63d436561b7a04754783f4b9dd6b1114a04c146de"}, + {file = "gotrue-0.5.0.tar.gz", hash = "sha256:b8a523a700809f89bc70ac4e465f5e610ac92793ca73b946bec665c30a764a8c"}, +] h11 = [ - {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, - {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, + {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, + {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, ] hikari = [ {file = "hikari-2.0.0.dev108-py3-none-any.whl", hash = "sha256:bc78e5c753f0b87ae24e1a644a2e4d01d08d5ed35cbaca0f160da5283a589785"}, {file = "hikari-2.0.0.dev108.tar.gz", hash = "sha256:d13cfcd0e3732185fa3048b5d9fd8b6078b5dbb0df7820ba7e3e55083bf9d4b5"}, ] +httpcore = [ + {file = "httpcore-0.14.7-py3-none-any.whl", hash = "sha256:47d772f754359e56dd9d892d9593b6f9870a37aeb8ba51e9a88b09b3d68cfade"}, + {file = "httpcore-0.14.7.tar.gz", hash = "sha256:7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1"}, +] +httpx = [ + {file = "httpx-0.21.3-py3-none-any.whl", hash = "sha256:df9a0fd43fa79dbab411d83eb1ea6f7a525c96ad92e60c2d7f40388971b25777"}, + {file = "httpx-0.21.3.tar.gz", hash = "sha256:7a3eb67ef0b8abbd6d9402248ef2f84a76080fa1c839f8662e6eb385640e445a"}, +] hypothesis = [ {file = "hypothesis-6.47.0-py3-none-any.whl", hash = "sha256:76a7d16f78b5691db34ef87fa677d020dd86189f6b748adf801088743b66c889"}, {file = "hypothesis-6.47.0.tar.gz", hash = "sha256:dd88c57f45032fc3d84596e426d8e3d67f88eda2d8a2d96a5697def036a7e0c7"}, @@ -582,10 +1270,26 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] +importlib-metadata = [ + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, +] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +invoke = [ + {file = "invoke-1.7.1-py3-none-any.whl", hash = "sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb"}, + {file = "invoke-1.7.1.tar.gz", hash = "sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"}, +] +jeepney = [ + {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, + {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, +] +keyring = [ + {file = "keyring-23.6.0-py3-none-any.whl", hash = "sha256:372ff2fc43ab779e3f87911c26e6c7acc8bb440cbd82683e383ca37594cb0617"}, + {file = "keyring-23.6.0.tar.gz", hash = "sha256:3ac00c26e4c93739e19103091a9986a9f79665a78cf15a4df1dba7ea9ac8da2f"}, +] loguru = [ {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, @@ -655,10 +1359,18 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +pkginfo = [ + {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, + {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, +] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +postgrest-py = [ + {file = "postgrest-py-0.10.2.tar.gz", hash = "sha256:14e49007245f78a1ecc8bfbc108c0590d8523c4abe1ba29d20d8cbff2efcabe2"}, + {file = "postgrest_py-0.10.2-py3-none-any.whl", hash = "sha256:46c4998efd9f3e67f954d21b565c3ab3c6cca03934a0121f2a0964b87436229c"}, +] ptable = [ {file = "PTable-0.9.2.tar.gz", hash = "sha256:aa7fc151cb40f2dabcd2275ba6f7fd0ff8577a86be3365cd3fb297cbe09cc292"}, ] @@ -666,6 +1378,51 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pydantic = [ + {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, + {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, + {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, + {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, + {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, + {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, + {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, + {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, + {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, + {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, +] +pygments = [ + {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, + {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, +] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, @@ -682,21 +1439,140 @@ python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] +python-gitlab = [ + {file = "python-gitlab-3.5.0.tar.gz", hash = "sha256:29ae7fb9b8c9aeb2e6e19bd2fd04867e93ecd7af719978ce68fac0cf116ab30d"}, + {file = "python_gitlab-3.5.0-py3-none-any.whl", hash = "sha256:73b5aa6502efa557ee1a51227cceb0243fac5529627da34f08c5f265bf50417c"}, +] +python-semantic-release = [ + {file = "python-semantic-release-7.28.1.tar.gz", hash = "sha256:d7f82b3d4c06b304d07689b8a1c7d0d448ff07c2ab81cd810c4f2f900f24c599"}, + {file = "python_semantic_release-7.28.1-py3-none-any.whl", hash = "sha256:319c3e811d6e10bc3f0e967419eae0e5e9ba1e6745aa2fd94dd24e3995541ca2"}, +] +pywin32-ctypes = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] +readme-renderer = [ + {file = "readme_renderer-35.0-py3-none-any.whl", hash = "sha256:73b84905d091c31f36e50b4ae05ae2acead661f6a09a9abb4df7d2ddcdb6a698"}, + {file = "readme_renderer-35.0.tar.gz", hash = "sha256:a727999acfc222fc21d82a12ed48c957c4989785e5865807c65a487d21677497"}, +] +realtime = [ + {file = "realtime-0.0.4-py3-none-any.whl", hash = "sha256:8c27f3c53b7e9487b4c5682d8b1ed9b1eb9bb3c6aa570b647499e3dc69e85d72"}, + {file = "realtime-0.0.4.tar.gz", hash = "sha256:ca4edbbe4fd6f55adbc8ff88dc1d4d6efc7aa0c422fc525ba75270b0b761f4c4"}, +] +requests = [ + {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, + {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, +] +requests-toolbelt = [ + {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, + {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, +] +rfc3986 = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] +secretstorage = [ + {file = "SecretStorage-3.3.2-py3-none-any.whl", hash = "sha256:755dc845b6ad76dcbcbc07ea3da75ae54bb1ea529eb72d15f83d26499a5df319"}, + {file = "SecretStorage-3.3.2.tar.gz", hash = "sha256:0a8eb9645b320881c222e827c26f4cfcf55363e8b374a021981ef886657a912f"}, +] +semver = [ + {file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"}, + {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, +] +setuptools-scm = [ + {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, + {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] sortedcontainers = [ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, ] +storage3 = [ + {file = "storage3-0.3.4-py3-none-any.whl", hash = "sha256:2801e9abead0513fbef0f4736220e3b26678104a955f535d1280094696e2084b"}, + {file = "storage3-0.3.4.tar.gz", hash = "sha256:89a9e56bcb7262417452d559448f8c0b5ab54a613f97bbc33cb78647c0366a5a"}, +] +supabase = [ + {file = "supabase-0.5.7-py3-none-any.whl", hash = "sha256:f5f9f09101d612d0f4dfd1d95750c0975fbe3bc792e0ec786c2d2b623914b81f"}, + {file = "supabase-0.5.7.tar.gz", hash = "sha256:7ce555a81c2046ef879c42aaab5a727bbfd32840872b5660d9f842ef5cc29c82"}, +] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] -uvicorn = [ - {file = "uvicorn-0.17.6-py3-none-any.whl", hash = "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6"}, - {file = "uvicorn-0.17.6.tar.gz", hash = "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23"}, +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +tomlkit = [ + {file = "tomlkit-0.10.2-py3-none-any.whl", hash = "sha256:905cf92c2111ef80d355708f47ac24ad1b6fc2adc5107455940088c9bbecaedb"}, + {file = "tomlkit-0.10.2.tar.gz", hash = "sha256:30d54c0b914e595f3d10a87888599eab5321a2a69abc773bbefff51599b72db6"}, +] +tqdm = [ + {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, + {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, +] +twine = [ + {file = "twine-3.8.0-py3-none-any.whl", hash = "sha256:d0550fca9dc19f3d5e8eadfce0c227294df0a2a951251a4385797c8a6198b7c8"}, + {file = "twine-3.8.0.tar.gz", hash = "sha256:8efa52658e0ae770686a13b675569328f1fba9837e5de1867bfe5f46a9aefe19"}, +] +typing-extensions = [ + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, +] +urllib3 = [ + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +websockets = [ + {file = "websockets-9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d144b350045c53c8ff09aa1cfa955012dd32f00c7e0862c199edcabb1a8b32da"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b4ad84b156cf50529b8ac5cc1638c2cf8680490e3fccb6121316c8c02620a2e4"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2cf04601633a4ec176b9cc3d3e73789c037641001dbfaf7c411f89cd3e04fcaf"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:5c8f0d82ea2468282e08b0cf5307f3ad022290ed50c45d5cb7767957ca782880"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:caa68c95bc1776d3521f81eeb4d5b9438be92514ec2a79fececda814099c8314"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d2c2d9b24d3c65b5a02cac12cbb4e4194e590314519ed49db2f67ef561c3cf58"}, + {file = "websockets-9.1-cp36-cp36m-win32.whl", hash = "sha256:f31722f1c033c198aa4a39a01905951c00bd1c74f922e8afc1b1c62adbcdd56a"}, + {file = "websockets-9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:3ddff38894c7857c476feb3538dd847514379d6dc844961dc99f04b0384b1b1b"}, + {file = "websockets-9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:51d04df04ed9d08077d10ccbe21e6805791b78eac49d16d30a1f1fe2e44ba0af"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f68c352a68e5fdf1e97288d5cec9296664c590c25932a8476224124aaf90dbcd"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b43b13e5622c5a53ab12f3272e6f42f1ce37cd5b6684b2676cb365403295cd40"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9147868bb0cc01e6846606cd65cbf9c58598f187b96d14dd1ca17338b08793bb"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:836d14eb53b500fd92bd5db2fc5894f7c72b634f9c2a28f546f75967503d8e25"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:48c222feb3ced18f3dc61168ca18952a22fb88e5eb8902d2bf1b50faefdc34a2"}, + {file = "websockets-9.1-cp37-cp37m-win32.whl", hash = "sha256:900589e19200be76dd7cbaa95e9771605b5ce3f62512d039fb3bc5da9014912a"}, + {file = "websockets-9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ab5ee15d3462198c794c49ccd31773d8a2b8c17d622aa184f669d2b98c2f0857"}, + {file = "websockets-9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e701a6c316b7067f1e8675c638036a796fe5116783a4c932e7eb8e305a3ffe"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b2e71c4670ebe1067fa8632f0d081e47254ee2d3d409de54168b43b0ba9147e0"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:230a3506df6b5f446fed2398e58dcaafdff12d67fe1397dff196411a9e820d02"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7df3596838b2a0c07c6f6d67752c53859a54993d4f062689fdf547cb56d0f84f"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:826ccf85d4514609219725ba4a7abd569228c2c9f1968e8be05be366f68291ec"}, + {file = "websockets-9.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0dd4eb8e0bbf365d6f652711ce21b8fd2b596f873d32aabb0fbb53ec604418cc"}, + {file = "websockets-9.1-cp38-cp38-win32.whl", hash = "sha256:1d0971cc7251aeff955aa742ec541ee8aaea4bb2ebf0245748fbec62f744a37e"}, + {file = "websockets-9.1-cp38-cp38-win_amd64.whl", hash = "sha256:7189e51955f9268b2bdd6cc537e0faa06f8fffda7fb386e5922c6391de51b077"}, + {file = "websockets-9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9e5fd6dbdf95d99bc03732ded1fc8ef22ebbc05999ac7e0c7bf57fe6e4e5ae2"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9e7fdc775fe7403dbd8bc883ba59576a6232eac96dacb56512daacf7af5d618d"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:597c28f3aa7a09e8c070a86b03107094ee5cdafcc0d55f2f2eac92faac8dc67d"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ad893d889bc700a5835e0a95a3e4f2c39e91577ab232a3dc03c262a0f8fc4b5c"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:1d6b4fddb12ab9adf87b843cd4316c4bd602db8d5efd2fb83147f0458fe85135"}, + {file = "websockets-9.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ebf459a1c069f9866d8569439c06193c586e72c9330db1390af7c6a0a32c4afd"}, + {file = "websockets-9.1-cp39-cp39-win32.whl", hash = "sha256:be5fd35e99970518547edc906efab29afd392319f020c3c58b0e1a158e16ed20"}, + {file = "websockets-9.1-cp39-cp39-win_amd64.whl", hash = "sha256:85db8090ba94e22d964498a47fdd933b8875a1add6ebc514c7ac8703eb97bbf0"}, + {file = "websockets-9.1.tar.gz", hash = "sha256:276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3"}, ] win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, @@ -776,3 +1652,7 @@ yarl = [ {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, ] +zipp = [ + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, +] diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml index 86c56e9e..0191a0f9 100644 --- a/discord_bot/pyproject.toml +++ b/discord_bot/pyproject.toml @@ -14,6 +14,8 @@ hikari = "^2.0.0-alpha.108" loguru = "^0.6.0" # Table plotting ptable = "^0.9.2" +# Remote SQL DB +supabase = "^0.5.7" [tool.poetry.dev-dependencies] # Test library diff --git a/discord_bot/supabase_async_client.py b/discord_bot/supabase_async_client.py new file mode 100644 index 00000000..df0841a1 --- /dev/null +++ b/discord_bot/supabase_async_client.py @@ -0,0 +1,199 @@ +from typing import Any, Coroutine, Dict + +from postgrest import AsyncFilterRequestBuilder, AsyncPostgrestClient, AsyncRequestBuilder +from supabase.lib.auth_client import SupabaseAuthClient +from supabase.lib.client_options import ClientOptions +from supabase.lib.storage_client import SupabaseStorageClient + + +class Client: + """Supabase client class.""" + + def __init__( + self, + supabase_url: str, + supabase_key: str, + options: ClientOptions = ClientOptions(), + ): + """Instantiate the client. + + Parameters + ---------- + supabase_url: str + The URL to the Supabase instance that should be connected to. + supabase_key: str + The API key to the Supabase instance that should be connected to. + **options + Any extra settings to be optionally specified - also see the + `DEFAULT_OPTIONS` dict. + """ + + if not supabase_url: + raise Exception('supabase_url is required') + if not supabase_key: + raise Exception('supabase_key is required') + self.supabase_url = supabase_url + self.supabase_key = supabase_key + options.headers.update(self._get_auth_headers()) + self.rest_url: str = f'{supabase_url}/rest/v1' + self.realtime_url: str = f'{supabase_url}/realtime/v1'.replace('http', 'ws') + self.auth_url: str = f'{supabase_url}/auth/v1' + self.storage_url = f'{supabase_url}/storage/v1' + self.schema: str = options.schema + + # Instantiate clients. + self.auth = self._init_supabase_auth_client( + auth_url=self.auth_url, + client_options=options, + ) + # TODO(fedden): Bring up to parity with JS client. + # self.realtime: SupabaseRealtimeClient = self._init_realtime_client( + # realtime_url=self.realtime_url, + # supabase_key=self.supabase_key, + # ) + self.realtime = None + self.postgrest = self._init_postgrest_client( + rest_url=self.rest_url, + supabase_key=self.supabase_key, + headers=options.headers, + schema=options.schema, + ) + + def storage(self) -> SupabaseStorageClient: + """Create instance of the storage client""" + return SupabaseStorageClient(self.storage_url, self._get_auth_headers()) + + def table(self, table_name: str) -> AsyncRequestBuilder: + """Perform a table operation. + + Note that the supabase client uses the `from` method, but in Python, + this is a reserved keyword so we have elected to use the name `table`. + Alternatively you can use the `.from_()` method. + """ + return self.from_(table_name) + + def from_(self, table_name: str) -> AsyncRequestBuilder: + """Perform a table operation. + + See the `table` method. + """ + return self.postgrest.from_(table_name) + + def rpc(self, fn: str, params: Dict[Any, Any]) -> Coroutine[None, None, AsyncFilterRequestBuilder]: + """Performs a stored procedure call. + + Parameters + ---------- + fn : callable + The stored procedure call to be executed. + params : dict of any + Parameters passed into the stored procedure call. + + Returns + ------- + AsyncFilterRequestBuilder + Returns a filter builder. This lets you apply filters on the response + of an RPC. + """ + return self.postgrest.rpc(fn, params) + + # async def remove_subscription_helper(resolve): + # try: + # await self._close_subscription(subscription) + # open_subscriptions = len(self.get_subscriptions()) + # if not open_subscriptions: + # error = await self.realtime.disconnect() + # if error: + # return {"error": None, "data": { open_subscriptions}} + # except Exception as e: + # raise e + # return remove_subscription_helper(subscription) + + # async def _close_subscription(self, subscription): + # """Close a given subscription + + # Parameters + # ---------- + # subscription + # The name of the channel + # """ + # if not subscription.closed: + # await self._closeChannel(subscription) + + # def get_subscriptions(self): + # """Return all channels the client is subscribed to.""" + # return self.realtime.channels + + # @staticmethod + # def _init_realtime_client( + # realtime_url: str, supabase_key: str + # ) -> SupabaseRealtimeClient: + # """Private method for creating an instance of the realtime-py client.""" + # return SupabaseRealtimeClient( + # realtime_url, {"params": {"apikey": supabase_key}} + # ) + + @staticmethod + def _init_supabase_auth_client( + auth_url: str, + client_options: ClientOptions, + ) -> SupabaseAuthClient: + """Creates a wrapped instance of the GoTrue Client.""" + return SupabaseAuthClient( + url=auth_url, + auto_refresh_token=client_options.auto_refresh_token, + persist_session=client_options.persist_session, + local_storage=client_options.local_storage, + headers=client_options.headers, + ) + + @staticmethod + def _init_postgrest_client( + rest_url: str, supabase_key: str, headers: Dict[str, str], schema: str + ) -> AsyncPostgrestClient: + """Private helper for creating an instance of the Postgrest client.""" + client = AsyncPostgrestClient(rest_url, headers=headers, schema=schema) + client.auth(token=supabase_key) + return client + + def _get_auth_headers(self) -> Dict[str, str]: + """Helper method to get auth headers.""" + # What's the corresponding method to get the token + return { + 'apiKey': self.supabase_key, + 'Authorization': f'Bearer {self.supabase_key}', + } + + +def create_client( + supabase_url: str, + supabase_key: str, + options: ClientOptions = ClientOptions(), +) -> Client: + """Create client function to instantiate supabase client like JS runtime. + + Parameters + ---------- + supabase_url: str + The URL to the Supabase instance that should be connected to. + supabase_key: str + The API key to the Supabase instance that should be connected to. + **options + Any extra settings to be optionally specified - also see the + `DEFAULT_OPTIONS` dict. + + Examples + -------- + Instantiating the client. + >>> import os + >>> from supabase import create_client, Client + >>> + >>> url: str = os.environ.get("SUPABASE_TEST_URL") + >>> key: str = os.environ.get("SUPABASE_TEST_KEY") + >>> supabase: Client = create_client(url, key) + + Returns + ------- + Client + """ + return Client(supabase_url=supabase_url, supabase_key=supabase_key, options=options) diff --git a/poetry.lock b/poetry.lock index d5a8ccdf..b88fe3fd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -166,6 +166,22 @@ pydantic = ">=1.9.0" toml = "*" yarl = ">=1.6" +[[package]] +name = "bleach" +version = "5.0.0" +description = "An easy safelist-based HTML-sanitizing tool." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0)"] +dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] + [[package]] name = "bokeh" version = "2.4.3" @@ -232,6 +248,17 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-log" +version = "0.4.0" +description = "Logging integration for Click" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" + [[package]] name = "cloudpickle" version = "2.1.0" @@ -242,7 +269,7 @@ python-versions = ">=3.6" [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -341,6 +368,17 @@ typing-inspect = ">=0.4.0" [package.extras] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] +[[package]] +name = "deprecation" +version = "2.1.0" +description = "A library to handle automated deprecations" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +packaging = "*" + [[package]] name = "dill" version = "0.3.5.1" @@ -361,12 +399,23 @@ optional = false python-versions = "*" [[package]] -name = "distro" -version = "1.7.0" -description = "Distro - an OS platform information API" -category = "dev" +name = "docutils" +version = "0.18.1" +description = "Docutils -- Python Documentation Utilities" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "dotty-dict" +version = "1.3.0" +description = "Dictionary wrapper for quick access to deeply nested keys." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +setuptools_scm = "*" [[package]] name = "dpath" @@ -456,12 +505,38 @@ optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] -name = "gnureadline" -version = "8.1.2" -description = "The standard Python readline extension statically linked against the GNU readline library." -category = "dev" +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.27" +description = "GitPython is a python library used to interact with Git repositories" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "gotrue" +version = "0.5.0" +description = "Python Client Library for GoTrue" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +httpx = ">=0.21.3,<0.22.0" +pydantic = ">=1.9.0,<2.0.0" [[package]] name = "greenlet" @@ -476,7 +551,7 @@ docs = ["sphinx"] [[package]] name = "h11" -version = "0.13.0" +version = "0.12.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" category = "main" optional = false @@ -500,6 +575,44 @@ multidict = ">=6.0,<7.0" server = ["pynacl (>=1.5,<2.0)"] speedups = ["aiodns (>=3.0,<4.0)", "cchardet (>=2.1,<3.0)", "Brotli (>=1.0,<2.0)", "ciso8601 (>=2.2,<3.0)"] +[[package]] +name = "httpcore" +version = "0.14.7" +description = "A minimal low-level HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +anyio = ">=3.0.0,<4.0.0" +certifi = "*" +h11 = ">=0.11,<0.13" +sniffio = ">=1.0.0,<2.0.0" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] + +[[package]] +name = "httpx" +version = "0.21.3" +description = "The next generation HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +certifi = "*" +charset-normalizer = "*" +httpcore = ">=0.14.0,<0.15.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotlicffi", "brotli"] +cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10.0.0,<11.0.0)", "pygments (>=2.0.0,<3.0.0)"] +http2 = ["h2 (>=3,<5)"] + [[package]] name = "hypothesis" version = "6.47.3" @@ -588,7 +701,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [[package]] name = "importlib-resources" -version = "5.7.1" +version = "5.8.0" description = "Read resources from Python packages" category = "main" optional = false @@ -609,6 +722,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "invoke" +version = "1.7.1" +description = "Pythonic task execution" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "isort" version = "5.10.1" @@ -623,6 +744,18 @@ requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] +[[package]] +name = "jeepney" +version = "0.8.0" +description = "Low-level, pure Python DBus protocol wrapper." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest", "pytest-trio", "pytest-asyncio (>=0.17)", "testpath", "trio", "async-timeout"] +trio = ["trio", "async-generator"] + [[package]] name = "jinja2" version = "3.1.2" @@ -637,6 +770,24 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "keyring" +version = "23.6.0" +description = "Store and access your passwords safely." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} +pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} +SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + [[package]] name = "kiwisolver" version = "1.4.3" @@ -909,7 +1060,7 @@ invoke = ["invoke (>=1.3)"] [[package]] name = "peewee" -version = "3.14.10" +version = "3.15.0" description = "a little orm" category = "main" optional = false @@ -939,6 +1090,17 @@ python-versions = ">=3.7" docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +[[package]] +name = "pkginfo" +version = "1.8.3" +description = "Query metadatdata from sdists / bdists / installed packages." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.extras] +testing = ["nose", "coverage"] + [[package]] name = "platformdirs" version = "2.5.2" @@ -953,17 +1115,17 @@ test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytes [[package]] name = "playwright" -version = "1.22.0" +version = "1.18.1" description = "A high-level API to automate web browsers" category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -greenlet = "1.1.2" -pyee = "8.1.0" +greenlet = ">=1.0.0" +pyee = ">=8.0.1" typing-extensions = {version = "*", markers = "python_version <= \"3.8\""} -websockets = "10.1" +websockets = ">=8.1" [[package]] name = "pluggy" @@ -977,6 +1139,19 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "postgrest-py" +version = "0.10.2" +description = "PostgREST client for Python. This library provides an ORM interface to PostgREST." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +deprecation = ">=2.1.0,<3.0.0" +httpx = ">=0.20,<0.23" +pydantic = ">=1.9.0,<2.0.0" + [[package]] name = "pre-commit" version = "2.19.0" @@ -993,17 +1168,6 @@ pyyaml = ">=5.1" toml = "*" virtualenv = ">=20.0.8" -[[package]] -name = "prompt-toolkit" -version = "3.0.29" -description = "Library for building powerful interactive command lines in Python" -category = "dev" -optional = false -python-versions = ">=3.6.2" - -[package.dependencies] -wcwidth = "*" - [[package]] name = "psutil" version = "5.9.1" @@ -1074,7 +1238,7 @@ python-versions = "*" name = "pygments" version = "2.12.0" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -1153,14 +1317,6 @@ python-versions = ">=3.6.8" [package.extras] diagrams = ["railroad-diagrams", "jinja2"] -[[package]] -name = "pyperclip" -version = "1.8.2" -description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "pytest" version = "7.1.2" @@ -1276,6 +1432,22 @@ python-versions = ">=3.5" [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-gitlab" +version = "3.5.0" +description = "Interact with GitLab API" +category = "main" +optional = false +python-versions = ">=3.7.0" + +[package.dependencies] +requests = ">=2.25.0" +requests-toolbelt = ">=0.9.1" + +[package.extras] +autocompletion = ["argcomplete (>=1.10.0,<3)"] +yaml = ["PyYaml (>=5.2)"] + [[package]] name = "python-multipart" version = "0.0.5" @@ -1287,6 +1459,32 @@ python-versions = "*" [package.dependencies] six = ">=1.4.0" +[[package]] +name = "python-semantic-release" +version = "7.28.1" +description = "Automatic Semantic Versioning for Python projects" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = ">=7,<9" +click-log = ">=0.3,<1" +dotty-dict = ">=1.3.0,<2" +gitpython = ">=3.0.8,<4" +invoke = ">=1.4.1,<2" +python-gitlab = ">=2,<4" +requests = ">=2.25,<3" +semver = ">=2.10,<3" +tomlkit = ">=0.10.0,<0.11.0" +twine = ">=3,<4" + +[package.extras] +dev = ["tox", "isort", "black"] +docs = ["Sphinx (==1.3.6)"] +mypy = ["mypy", "types-requests"] +test = ["coverage (>=5,<6)", "pytest (>=5,<6)", "pytest-xdist (>=1,<2)", "pytest-mock (>=2,<3)", "responses (==0.13.3)", "mock (==1.3.0)"] + [[package]] name = "python-slugify" version = "6.1.2" @@ -1317,6 +1515,14 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pywin32-ctypes" +version = "0.2.0" +description = "" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pyyaml" version = "6.0" @@ -1338,6 +1544,34 @@ colorama = {version = ">=0.4.1", markers = "python_version > \"3.4\""} future = "*" mando = ">=0.6,<0.7" +[[package]] +name = "readme-renderer" +version = "35.0" +description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +bleach = ">=2.1.0" +docutils = ">=0.13.1" +Pygments = ">=2.5.1" + +[package.extras] +md = ["cmarkgfm (>=0.8.0)"] + +[[package]] +name = "realtime" +version = "0.0.4" +description = "" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +python-dateutil = ">=2.8.1,<3.0.0" +websockets = ">=9.1,<10.0" + [[package]] name = "requests" version = "2.28.0" @@ -1356,6 +1590,31 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +[[package]] +name = "requests-toolbelt" +version = "0.9.1" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + [[package]] name = "rich" version = "12.4.4" @@ -1412,15 +1671,24 @@ pandas = ">=0.23" scipy = ">=1.0" [[package]] -name = "setproctitle" -version = "1.2.3" -description = "A Python module to customize the process title" -category = "dev" +name = "secretstorage" +version = "3.3.2" +description = "Python bindings to FreeDesktop.org Secret Service API" +category = "main" optional = false python-versions = ">=3.6" -[package.extras] -test = ["pytest"] +[package.dependencies] +cryptography = ">=2.0" +jeepney = ">=0.6" + +[[package]] +name = "semver" +version = "2.13.0" +description = "Python helper for Semantic Versioning (http://semver.org/)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "setuptools-scm" @@ -1459,6 +1727,14 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "snakeviz" version = "2.1.1" @@ -1557,6 +1833,34 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] +[[package]] +name = "storage3" +version = "0.3.4" +description = "Supabase Storage client for Python." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +httpx = ">=0.19,<0.22" +typing-extensions = ">=4.2.0,<5.0.0" + +[[package]] +name = "supabase" +version = "0.5.7" +description = "Supabase client for Python." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +gotrue = ">=0.5.0,<0.6.0" +httpx = ">=0.21.3,<0.22.0" +postgrest-py = ">=0.10.2,<0.11.0" +python-semantic-release = "7.28.1" +realtime = ">=0.0.4,<0.0.5" +storage3 = ">=0.3.1,<0.4.0" + [[package]] name = "text-unidecode" version = "1.3" @@ -1591,9 +1895,9 @@ python-versions = ">=3.7" [[package]] name = "tomlkit" -version = "0.11.0" +version = "0.10.2" description = "Style preserving TOML library" -category = "dev" +category = "main" optional = false python-versions = ">=3.6,<4.0" @@ -1605,6 +1909,43 @@ category = "main" optional = false python-versions = ">= 3.5" +[[package]] +name = "tqdm" +version = "4.64.0" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "twine" +version = "3.8.0" +description = "Collection of utilities for publishing packages on PyPI" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = ">=0.4.3" +importlib-metadata = ">=3.6" +keyring = ">=15.1" +pkginfo = ">=1.8.1" +readme-renderer = ">=21.0" +requests = ">=2.20" +requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" +rfc3986 = ">=1.4.0" +tqdm = ">=4.14" +urllib3 = ">=1.26.0" + [[package]] name = "typing-extensions" version = "4.2.0" @@ -1684,20 +2025,20 @@ python-versions = ">=3.7" anyio = ">=3.0.0,<4" [[package]] -name = "wcwidth" -version = "0.2.5" -description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "main" optional = false python-versions = "*" [[package]] name = "websockets" -version = "10.1" +version = "9.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6.1" [[package]] name = "win32-setctime" @@ -1718,31 +2059,6 @@ category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -[[package]] -name = "xonsh" -version = "0.12.4" -description = "Python-powered, cross-platform, Unix-gazing shell" -category = "dev" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -distro = {version = "*", optional = true, markers = "platform_system == \"Linux\" and extra == \"full\""} -gnureadline = {version = "*", optional = true, markers = "platform_system == \"Darwin\" and extra == \"full\""} -prompt-toolkit = {version = ">=3.0.27", optional = true, markers = "extra == \"full\""} -pygments = {version = ">=2.2", optional = true, markers = "extra == \"full\""} -pyperclip = {version = "*", optional = true, markers = "extra == \"full\""} -setproctitle = {version = "*", optional = true, markers = "platform_system == \"Windows\" and extra == \"full\""} - -[package.extras] -full = ["prompt-toolkit (>=3.0.27)", "pyperclip", "pygments (>=2.2)", "gnureadline", "distro", "setproctitle"] -linux = ["distro"] -mac = ["gnureadline"] -proctitle = ["setproctitle"] -ptk = ["prompt-toolkit (>=3.0.27)", "pyperclip"] -pygments = ["pygments (>=2.2)"] -zipapp = ["importlib-resources"] - [[package]] name = "yapf" version = "0.32.0" @@ -1791,7 +2107,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "32f7c6caf13725522bb44cb479b10a38e406fcb0a8faef59458ecddab2daf4cb" +content-hash = "308fe0ec394959e6c85ea9893c2c14ddc70f96ac0c08800279a1b7e2e86f0dc0" [metadata.files] aiocontextvars = [ @@ -1925,6 +2241,10 @@ beanie = [ {file = "beanie-1.11.4-py3-none-any.whl", hash = "sha256:90251b6c51a4e28fe4e6c83dbbddce928f954079780ebc5f69b96f4bd348ee9c"}, {file = "beanie-1.11.4.tar.gz", hash = "sha256:7bc63100e2add6bfb4a4159a460b88d91bc4e3c355be7194ba1ff18822714535"}, ] +bleach = [ + {file = "bleach-5.0.0-py3-none-any.whl", hash = "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1"}, + {file = "bleach-5.0.0.tar.gz", hash = "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565"}, +] bokeh = [ {file = "bokeh-2.4.3-py3-none-any.whl", hash = "sha256:104d2f0a4ca7774ee4b11e545aa34ff76bf3e2ad6de0d33944361981b65da420"}, {file = "bokeh-2.4.3.tar.gz", hash = "sha256:ef33801161af379665ab7a34684f2209861e3aefd5c803a21fbbb99d94874b03"}, @@ -1997,13 +2317,17 @@ click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] +click-log = [ + {file = "click-log-0.4.0.tar.gz", hash = "sha256:3970f8570ac54491237bcdb3d8ab5e3eef6c057df29f8c3d1151a51a9c23b975"}, + {file = "click_log-0.4.0-py2.py3-none-any.whl", hash = "sha256:a43e394b528d52112af599f2fc9e4b7cf3c15f94e53581f74fa6867e68c91756"}, +] cloudpickle = [ {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] colorlog = [ {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, @@ -2091,6 +2415,10 @@ dataclasses-json = [ {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, ] +deprecation = [ + {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, + {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, +] dill = [ {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, @@ -2099,9 +2427,12 @@ distlib = [ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] -distro = [ - {file = "distro-1.7.0-py3-none-any.whl", hash = "sha256:d596311d707e692c2160c37807f83e3820c5d539d5a83e87cfb6babd8ba3a06b"}, - {file = "distro-1.7.0.tar.gz", hash = "sha256:151aeccf60c216402932b52e40ee477a939f8d58898927378a02abbe852c1c39"}, +docutils = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] +dotty-dict = [ + {file = "dotty_dict-1.3.0.tar.gz", hash = "sha256:eb0035a3629ecd84397a68f1f42f1e94abd1c34577a19cd3eacad331ee7cbaf0"}, ] dpath = [ {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, @@ -2187,29 +2518,17 @@ frozenlist = [ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] -gnureadline = [ - {file = "gnureadline-8.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:861936c9b362d96152af2d73ccb6f3e901e70f0e4a2e7e62f4e226e91d349edb"}, - {file = "gnureadline-8.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ce5c49ecc54e1df0193e90422806a5940f908553206689aeaa04bc959d3aa9a"}, - {file = "gnureadline-8.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753aa1e46b4260b38da424c6a7da7a3ddac161a0b4e6fb71c1093e9ef3d2e73"}, - {file = "gnureadline-8.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb921c2cbc14671bb81f3f33d9363a9d0720203b5d716baee32e51c399e914b"}, - {file = "gnureadline-8.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e3a8aaf1d61d351c16ad2d3425caf5768603ff5d0e86ba61da9b8756bdd1b95"}, - {file = "gnureadline-8.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:72da8bac1eb24b6c8237a33d7019a3f004a3d5ba867337175ed764831d9a2c99"}, - {file = "gnureadline-8.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de3d8ea66f1b5d00ed843b8925fc07476b8c838c38e584af8639c6a976a43d08"}, - {file = "gnureadline-8.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:194bafa818d0fc3d46f8d71a8811a297a493c1264d3e2d0a71b1b1ff05f8fc15"}, - {file = "gnureadline-8.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:49df5a432e4ff39cee1b0632c6d0e5fb304757113e502d70b50e33d9ffa47372"}, - {file = "gnureadline-8.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e84e903de1514043e6a22866a1973c2ad5f5717f78e9d54e4d6809c48fbd3d81"}, - {file = "gnureadline-8.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b422ff3a78e281ee2e19b0eff70efa48396284bbefa86b83438d668ea9d038a3"}, - {file = "gnureadline-8.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:264f22e865975a3c2ac1183f431dddd8ff7de5a645b89a801c6a276d800f49f3"}, - {file = "gnureadline-8.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c7971653083a48049abd52baa9c8c0188aee362e7b2dd236fe51ecd4e6bc9bbe"}, - {file = "gnureadline-8.1.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4ad9b10409d969ba42acbf89e58352cf3043a5155c2ee677d061e292336b5479"}, - {file = "gnureadline-8.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecdc4368bd2f7ae9a22de31b024455222082cb49b98ee69ffd0a59734bf648e1"}, - {file = "gnureadline-8.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fde3e6417d9004381e8e9835e0a89d81d2d77eeace9364d2e3d9fb64054d449"}, - {file = "gnureadline-8.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:17a651e0c49d4b44e8ccf8992edc5a544e33ed9695d3b940ef002858c2215744"}, - {file = "gnureadline-8.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2816bac8be6bc0e3aa2301acac76e308137eeef1b618c9e0c95c1f89a139a4d8"}, - {file = "gnureadline-8.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c402bc6e107beb015ae18c3d2e11f28375f049e464423ead88b35affe80f9be0"}, - {file = "gnureadline-8.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ea248385e0d87a3fada38c9164a5756861aa59d6ee010c8be30eeb41f41b49"}, - {file = "gnureadline-8.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1e2d34b0c4ad81c7b00019fafa6de2faf6969c55fa58229e26267cae34047e"}, - {file = "gnureadline-8.1.2.tar.gz", hash = "sha256:4262a6aa356ab22ef642f43a7f94eb42a72d6f0c532edb4e8c6b933f573056d2"}, +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +gitpython = [ + {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, + {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, +] +gotrue = [ + {file = "gotrue-0.5.0-py3-none-any.whl", hash = "sha256:ed81289fd6a542caa05e6ab63d436561b7a04754783f4b9dd6b1114a04c146de"}, + {file = "gotrue-0.5.0.tar.gz", hash = "sha256:b8a523a700809f89bc70ac4e465f5e610ac92793ca73b946bec665c30a764a8c"}, ] greenlet = [ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, @@ -2269,13 +2588,21 @@ greenlet = [ {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, ] h11 = [ - {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, - {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, + {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, + {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, ] hikari = [ {file = "hikari-2.0.0.dev108-py3-none-any.whl", hash = "sha256:bc78e5c753f0b87ae24e1a644a2e4d01d08d5ed35cbaca0f160da5283a589785"}, {file = "hikari-2.0.0.dev108.tar.gz", hash = "sha256:d13cfcd0e3732185fa3048b5d9fd8b6078b5dbb0df7820ba7e3e55083bf9d4b5"}, ] +httpcore = [ + {file = "httpcore-0.14.7-py3-none-any.whl", hash = "sha256:47d772f754359e56dd9d892d9593b6f9870a37aeb8ba51e9a88b09b3d68cfade"}, + {file = "httpcore-0.14.7.tar.gz", hash = "sha256:7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1"}, +] +httpx = [ + {file = "httpx-0.21.3-py3-none-any.whl", hash = "sha256:df9a0fd43fa79dbab411d83eb1ea6f7a525c96ad92e60c2d7f40388971b25777"}, + {file = "httpx-0.21.3.tar.gz", hash = "sha256:7a3eb67ef0b8abbd6d9402248ef2f84a76080fa1c839f8662e6eb385640e445a"}, +] hypothesis = [ {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, @@ -2347,21 +2674,33 @@ importlib-metadata = [ {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, ] importlib-resources = [ - {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, - {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, + {file = "importlib_resources-5.8.0-py3-none-any.whl", hash = "sha256:7952325ffd516c05a8ad0858c74dff2c3343f136fe66a6002b2623dd1d43f223"}, + {file = "importlib_resources-5.8.0.tar.gz", hash = "sha256:568c9f16cb204f9decc8d6d24a572eeea27dacbb4cee9e6b03a8025736769751"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +invoke = [ + {file = "invoke-1.7.1-py3-none-any.whl", hash = "sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb"}, + {file = "invoke-1.7.1.tar.gz", hash = "sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"}, +] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] +jeepney = [ + {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, + {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, +] jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] +keyring = [ + {file = "keyring-23.6.0-py3-none-any.whl", hash = "sha256:372ff2fc43ab779e3f87911c26e6c7acc8bb440cbd82683e383ca37594cb0617"}, + {file = "keyring-23.6.0.tar.gz", hash = "sha256:3ac00c26e4c93739e19103091a9986a9f79665a78cf15a4df1dba7ea9ac8da2f"}, +] kiwisolver = [ {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fd2842a0faed9ab9aba0922c951906132d9384be89690570f0ed18cd4f20e658"}, {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:caa59e2cae0e23b1e225447d7a9ddb0f982f42a6a22d497a484dfe62a06f7c0e"}, @@ -2714,7 +3053,7 @@ paramiko = [ {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, ] peewee = [ - {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, + {file = "peewee-3.15.0.tar.gz", hash = "sha256:48eac70be812ac84daa5400fb8e7b545e0c83adcfa05c8e2a8612f9ced4da495"}, ] pendulum = [ {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, @@ -2779,31 +3118,35 @@ pillow = [ {file = "Pillow-9.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8"}, {file = "Pillow-9.1.1.tar.gz", hash = "sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0"}, ] +pkginfo = [ + {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, + {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, +] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, ] playwright = [ - {file = "playwright-1.22.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:9506d582e1a36aa19b06f5b5f8ae154265ec2fc5039217cfe8dfd66edb1a7563"}, - {file = "playwright-1.22.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd2e87b4d2a3d736bbd4a85ed7638c577dfc8098bcabd92d248440d51beac50b"}, - {file = "playwright-1.22.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:a36dfaf9be0228985b7b001887f66dc61e8300970c0602ae9d5b191da510a982"}, - {file = "playwright-1.22.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:78ddf51d0c08d94edb6d2ddf7b262f0d87a1c0ab5e121bfefa1945214c308f95"}, - {file = "playwright-1.22.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217b2f623527ded15d602ccca5138395a1677c67399c4494844d5341420d34e0"}, - {file = "playwright-1.22.0-py3-none-win32.whl", hash = "sha256:a4977211414532a525a057f8d461a7277fdfefa20eb577b2e0247523815ba521"}, - {file = "playwright-1.22.0-py3-none-win_amd64.whl", hash = "sha256:bc7827fcc037a9a6f571328c524d50bfd46db4ebdc415ab8b8efafae30c1d597"}, + {file = "playwright-1.18.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:e47ebe9d55a3d8e320b63aa688b671d9e40e50c906315cb225f20ffe7503b35d"}, + {file = "playwright-1.18.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:528470e89827b09524acb197634381f62483c15b78dcbedc85528e0b727e705f"}, + {file = "playwright-1.18.1-py3-none-macosx_11_0_universal2.whl", hash = "sha256:a5ce9c42e6108b5aeb63fdfefe2adbb9d0d85c1cba389bf7da0c56d1a6aa874e"}, + {file = "playwright-1.18.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:d8a8d944da91f77c0a66d23e51bf8aa142a38820da8e70cf13b68636ee343346"}, + {file = "playwright-1.18.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ae5f8e6ae820d44b6fe04f94c261047536ee75724a032f2dd2be94c952303ed"}, + {file = "playwright-1.18.1-py3-none-win32.whl", hash = "sha256:917b8472cab589cece536ae97491b4f124b324642190985440737d1fe8a55764"}, + {file = "playwright-1.18.1-py3-none-win_amd64.whl", hash = "sha256:84572ba1d04cb3e31e30181fa4fa09ca64d7841af19e98ff221259e2d6a108e6"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +postgrest-py = [ + {file = "postgrest-py-0.10.2.tar.gz", hash = "sha256:14e49007245f78a1ecc8bfbc108c0590d8523c4abe1ba29d20d8cbff2efcabe2"}, + {file = "postgrest_py-0.10.2-py3-none-any.whl", hash = "sha256:46c4998efd9f3e67f954d21b565c3ab3c6cca03934a0121f2a0964b87436229c"}, +] pre-commit = [ {file = "pre_commit-2.19.0-py2.py3-none-any.whl", hash = "sha256:10c62741aa5704faea2ad69cb550ca78082efe5697d6f04e5710c3c229afdd10"}, {file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"}, ] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, - {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, -] psutil = [ {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, @@ -3030,9 +3373,6 @@ pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] -pyperclip = [ - {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, -] pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, @@ -3066,9 +3406,17 @@ python-dotenv = [ {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, ] +python-gitlab = [ + {file = "python-gitlab-3.5.0.tar.gz", hash = "sha256:29ae7fb9b8c9aeb2e6e19bd2fd04867e93ecd7af719978ce68fac0cf116ab30d"}, + {file = "python_gitlab-3.5.0-py3-none-any.whl", hash = "sha256:73b5aa6502efa557ee1a51227cceb0243fac5529627da34f08c5f265bf50417c"}, +] python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] +python-semantic-release = [ + {file = "python-semantic-release-7.28.1.tar.gz", hash = "sha256:d7f82b3d4c06b304d07689b8a1c7d0d448ff07c2ab81cd810c4f2f900f24c599"}, + {file = "python_semantic_release-7.28.1-py3-none-any.whl", hash = "sha256:319c3e811d6e10bc3f0e967419eae0e5e9ba1e6745aa2fd94dd24e3995541ca2"}, +] python-slugify = [ {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"}, {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"}, @@ -3081,6 +3429,10 @@ pytzdata = [ {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, ] +pywin32-ctypes = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, @@ -3120,10 +3472,26 @@ radon = [ {file = "radon-5.1.0-py2.py3-none-any.whl", hash = "sha256:fa74e018197f1fcb54578af0f675d8b8e2342bd8e0b72bef8197bc4c9e645f36"}, {file = "radon-5.1.0.tar.gz", hash = "sha256:cb1d8752e5f862fb9e20d82b5f758cbc4fb1237c92c9a66450ea0ea7bf29aeee"}, ] +readme-renderer = [ + {file = "readme_renderer-35.0-py3-none-any.whl", hash = "sha256:73b84905d091c31f36e50b4ae05ae2acead661f6a09a9abb4df7d2ddcdb6a698"}, + {file = "readme_renderer-35.0.tar.gz", hash = "sha256:a727999acfc222fc21d82a12ed48c957c4989785e5865807c65a487d21677497"}, +] +realtime = [ + {file = "realtime-0.0.4-py3-none-any.whl", hash = "sha256:8c27f3c53b7e9487b4c5682d8b1ed9b1eb9bb3c6aa570b647499e3dc69e85d72"}, + {file = "realtime-0.0.4.tar.gz", hash = "sha256:ca4edbbe4fd6f55adbc8ff88dc1d4d6efc7aa0c422fc525ba75270b0b761f4c4"}, +] requests = [ {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, ] +requests-toolbelt = [ + {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, + {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, +] +rfc3986 = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] rich = [ {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"}, @@ -3171,78 +3539,13 @@ seaborn = [ {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, ] -setproctitle = [ - {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a668acec8b61a971de54bc4c733869ea7b0eb1348eae5a32b9477f788908e5c"}, - {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52265182fe5ac237d179d8e949248d307882a2e6ec7f189c8dac1c9d1b3631fa"}, - {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d00ef63a1f78e13c236895badac77b6c8503377467b9c1a4f81fe729d16e03"}, - {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82a49aaf440232c762539ab3737b5174d31aba0141fd4bf4d8739c28d18624"}, - {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:791bed39e4ecbdd008b64999a60c9cc560d17b3836ca0c27cd4708e8e1bcf495"}, - {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8e4da68d4d4ba46d4c5db6ae5eb61b11de9c520f25ae8334570f4d0018a8611"}, - {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47f97f591ea2335b7d35f5e9ad7d806385338182dc6de5732d091e9c70ed1cc0"}, - {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:501c084cf3df7d848e91c97d4f8c44d799ba545858a79c6960326ce6f285b4e4"}, - {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a39b30d7400c0d50941fe19e1fe0b7d35676186fec4d9c010129ac91b883fd26"}, - {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b213376fc779c0e1a4b60008f3fd03f74e9baa9665db37fa6646e98d31baa6d8"}, - {file = "setproctitle-1.2.3-cp310-cp310-win32.whl", hash = "sha256:e24fa9251cc22ddb88ef183070063fdca826c9636381f1c4fb9d2a1dccb7c2a4"}, - {file = "setproctitle-1.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:3b1883ccdbee624386dc046cfbcd80c4e75e24c478f35627984a79892e088b88"}, - {file = "setproctitle-1.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9cf1098205c23fbcaaaef798afaff714fa9ffadf24166f5e85e6d16b9ef82a1"}, - {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a546cd2dfaecb227d24122257b98b2e062762871888835c7b608f1c41c3a77ad"}, - {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e40c35564081983eab6a07f9eb5693867bc447b0edf9c61b69446223d6593814"}, - {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d083cae02e344e760bd21c28d591ac5f7ddbd6e1a0ecba62092ae724abd5c28"}, - {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2fa9f4b382a6cf88f2f345044d0916a92f37cac21355585bd14bc7ee91af187"}, - {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:38855b06a124361dc73c198853dee3f2b775531c4f4b7472f0e3d441192b3d8a"}, - {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:a81067bdc015fee1cc148c79b346f24fdad1224a8898b4239c7cbdee1add8a60"}, - {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:409a39f92e123be061626fdfd3e76625b04db103479bb4ba1c85b587db0b9498"}, - {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a993610383028f093112dce7f77b262e88fce9d70127535fcdc78953179857e8"}, - {file = "setproctitle-1.2.3-cp36-cp36m-win32.whl", hash = "sha256:4eed53c12146de5df959d84384ffc2774651cab406ee4854e12728cf0eee5297"}, - {file = "setproctitle-1.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:335750c9eb5b18326a138a09266862a52b4f474277c3e410b419bea9a1df8bee"}, - {file = "setproctitle-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a72bbe53191fbe574c94c0f8b9451dce535b398b7c47ce2e26e21d55eaa1d7e"}, - {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5464e6812d050c986e6e9b97d54ab88c23dbe9d81151a2fa10b48bb5133a1e2c"}, - {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec7c3a27460ae7811e868e5494e3d8aee5012912744c48fa2d80b5e614b1b972"}, - {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01cef383afc7ea7a3b1696818c8712029bf2f1d64f5d4777dbaf0166becf2c00"}, - {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c7315e53b49ef2227d47a75c3d28c4c51ea9ee46a066460732c0d0f8e605a7"}, - {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0b444ed4051161a3b0a85dec2bb9b50922f37c75f5fb86f7784b235cf6754336"}, - {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:be0b46beeb1c92450079a7f30a025d69b63fd6a5de040ebc478fd6e6bf3b63fc"}, - {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:60f7a2f5da36a3075dda7edbee2173be5b765b0460b8d401ee01a11f68dee1d2"}, - {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:138bfa853e607f06d95b0f253e9152b32a00af3d0dbec96abf0871236a483932"}, - {file = "setproctitle-1.2.3-cp37-cp37m-win32.whl", hash = "sha256:e80fc59739a738b5c67afbbb9d1c238aa47b6d290c2ada872b15c819350ec5f8"}, - {file = "setproctitle-1.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a912df3f065572cef211e9ed9f157a0dd2bd73d150281f18f00728afa1b1e5d2"}, - {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d45dbe4171f8c27a515ecb4562f4cd9ef67d98474bea18e0c14dfbdc2b225050"}, - {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9d905ac84dde5227de6516ec08639759f99684148bb88ba05f4cbdaebff5d69"}, - {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f272b84d79bbe15af26ecf6f7c129bbe642f628866c9253659cdb519216f138f"}, - {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc586f002fd5dd8695718e22a83771fd9f744f081a2b8e614bf6b5f44135964a"}, - {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4051c3a3b07f8a4cca205cd45366a22f322da2f26491c0d6b313a10f8c77b734"}, - {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25538341e56f9e75e9759229ff674282dccb5b1ce79a974f968d36208d465674"}, - {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fdb2231db176e0848b757fc5d9bed08bc8a498b5b9abb8b640f39e9720f309fc"}, - {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0670f2130a7ca0e167d3d5a7c8e3c707340b8693d6af7416ff55c18ab2a0a43f"}, - {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9a92978030616f5e20617b7b832efee398df82072b7239c53db41c8026f5fe55"}, - {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28e0df80d5069586a08a3cb463fb23503a37cbb805826ef93164bc4bfb5f35b9"}, - {file = "setproctitle-1.2.3-cp38-cp38-win32.whl", hash = "sha256:35b869e416a105c59133a48b569c6e808159485d916f55e80c7394a42667a386"}, - {file = "setproctitle-1.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:f47f6704880869d8e8f52efac2f2f60f5ed4cb9662b98fc1c7e916eefe76e61d"}, - {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ccb0b5334dbf248f7504d88b5e9e9a09a0da119eeafacd6f7247f7c055443522"}, - {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14641a4ec2f2110cf4afc666eaecc82ba67814e927e02647fa1f4cf74476e752"}, - {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a3cb19346a0cd680617742f5e39fdd14596f6fd91d6c9038272663e37441b4"}, - {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2ac0ebd9c63c3d19f768966be2f771bf088bc7373c63ed6fcbb3444a30d0f62"}, - {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32a84cc309b9e595f06a55bec2fa335a23c307a55d2989864b60ecd71ea87897"}, - {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f55493c987935fa540ef9ffb7ee7db03b4a18a9d5cc103681e2e6a6dfbd7054"}, - {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f2a137984d3436f13e4bf7c8ca6f6f292df119c009c5e39556cabba4f4bfbf92"}, - {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f06ff922254023eaabef6af6631f89e5f2f420cf0112865d57d7703f933d4e9f"}, - {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:eb06c1086cf8c8cf12ce45a02450befcb408dfd646d0ccb47d388fd6e73c333a"}, - {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2c8c245e08f6a296fdaa1b36894ec40e20464a4fc6458e6178c8d55a2f83457a"}, - {file = "setproctitle-1.2.3-cp39-cp39-win32.whl", hash = "sha256:21d6e064b8fee4e58eb00cdd8771c638de1bc30bb6c02d0208af9ca0a1c00898"}, - {file = "setproctitle-1.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:efb3001fd9e71d3ae939d826bf436f0446fd30a6ac01e0ce08cd7eb55ee5ac57"}, - {file = "setproctitle-1.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3dbe87e76197f9a303451512088c18c96f09a6fc4f871a92e5bd695f46f94a26"}, - {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b207de9e4f4aa5265b36dd826a1f6ef6566b064a042033bd7447efb7e9a7664"}, - {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ac48a94040ef21be37366cbc8270fcba2ca103d6c64da6099d5a7b034f72d0"}, - {file = "setproctitle-1.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9fb5d2e66f94eebc3d06cda9e71a3fffef24c5273971180a4b5628a37fae05a5"}, - {file = "setproctitle-1.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:423f8a6d8116acf975ebf93d6b5c4a752f7d2039fa9aafe175a62de86e17016e"}, - {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c0be45535e934deab3aa72ed1a8487174af4ea12cec124478c68a312e1c8b13"}, - {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65a9384cafdfed98f91416e93705ad08f049c298afcb9c515882beba23153bd0"}, - {file = "setproctitle-1.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d312a170f539895c8093b5e68ba126aa131c9f0d00f6360410db27ec50bf7afa"}, - {file = "setproctitle-1.2.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c93a2272740e60cddf59d3e1d35dbb89fcc3676f5ca9618bb4e6ae9633fdf13c"}, - {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f59444a25fb42ca07f53a4474b1545d97a06f016e6c6b8246eee5b146820b5"}, - {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06aab65e68163ead9d046b452dd9ad1fc6834ce6bde490f63fdce3be53e9cc73"}, - {file = "setproctitle-1.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97accd117392b1e57e09888792750c403d7729b7e4b193005178b3736b325ea0"}, - {file = "setproctitle-1.2.3.tar.gz", hash = "sha256:ecf28b1c07a799d76f4326e508157b71aeda07b84b90368ea451c0710dbd32c0"}, +secretstorage = [ + {file = "SecretStorage-3.3.2-py3-none-any.whl", hash = "sha256:755dc845b6ad76dcbcbc07ea3da75ae54bb1ea529eb72d15f83d26499a5df319"}, + {file = "SecretStorage-3.3.2.tar.gz", hash = "sha256:0a8eb9645b320881c222e827c26f4cfcf55363e8b374a021981ef886657a912f"}, +] +semver = [ + {file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"}, + {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, ] setuptools-scm = [ {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, @@ -3288,6 +3591,10 @@ six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] snakeviz = [ {file = "snakeviz-2.1.1-py2.py3-none-any.whl", hash = "sha256:931142dc927101c9a4b6e89bc0577ff1a3d1886b483a04e6af70c31d2c3dce19"}, {file = "snakeviz-2.1.1.tar.gz", hash = "sha256:0d96c006304f095cb4b3fb7ed98bb866ca35a7ca4ab9020bbc27d295ee4c94d9"}, @@ -3349,6 +3656,14 @@ starlette = [ {file = "starlette-0.18.0-py3-none-any.whl", hash = "sha256:377d64737a0e03560cb8eaa57604afee143cea5a4996933242798a7820e64f53"}, {file = "starlette-0.18.0.tar.gz", hash = "sha256:b45c6e9a617ecb5caf7e6446bd8d767b0084d6217e8e1b08187ca5191e10f097"}, ] +storage3 = [ + {file = "storage3-0.3.4-py3-none-any.whl", hash = "sha256:2801e9abead0513fbef0f4736220e3b26678104a955f535d1280094696e2084b"}, + {file = "storage3-0.3.4.tar.gz", hash = "sha256:89a9e56bcb7262417452d559448f8c0b5ab54a613f97bbc33cb78647c0366a5a"}, +] +supabase = [ + {file = "supabase-0.5.7-py3-none-any.whl", hash = "sha256:f5f9f09101d612d0f4dfd1d95750c0975fbe3bc792e0ec786c2d2b623914b81f"}, + {file = "supabase-0.5.7.tar.gz", hash = "sha256:7ce555a81c2046ef879c42aaab5a727bbfd32840872b5660d9f842ef5cc29c82"}, +] text-unidecode = [ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, @@ -3366,8 +3681,8 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] tomlkit = [ - {file = "tomlkit-0.11.0-py3-none-any.whl", hash = "sha256:0f4050db66fd445b885778900ce4dd9aea8c90c4721141fde0d6ade893820ef1"}, - {file = "tomlkit-0.11.0.tar.gz", hash = "sha256:71ceb10c0eefd8b8f11fe34e8a51ad07812cb1dc3de23247425fbc9ddc47b9dd"}, + {file = "tomlkit-0.10.2-py3-none-any.whl", hash = "sha256:905cf92c2111ef80d355708f47ac24ad1b6fc2adc5107455940088c9bbecaedb"}, + {file = "tomlkit-0.10.2.tar.gz", hash = "sha256:30d54c0b914e595f3d10a87888599eab5321a2a69abc773bbefff51599b72db6"}, ] tornado = [ {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, @@ -3412,6 +3727,14 @@ tornado = [ {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] +tqdm = [ + {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, + {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, +] +twine = [ + {file = "twine-3.8.0-py3-none-any.whl", hash = "sha256:d0550fca9dc19f3d5e8eadfce0c227294df0a2a951251a4385797c8a6198b7c8"}, + {file = "twine-3.8.0.tar.gz", hash = "sha256:8efa52658e0ae770686a13b675569328f1fba9837e5de1867bfe5f46a9aefe19"}, +] typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, @@ -3437,59 +3760,44 @@ watchgod = [ {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, ] -wcwidth = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] websockets = [ - {file = "websockets-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc"}, - {file = "websockets-10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60"}, - {file = "websockets-10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3477146d1f87ead8df0f27e8960249f5248dceb7c2741e8bbec9aa5338d0c053"}, - {file = "websockets-10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb01ea7b5f52e7125bdc3c5807aeaa2d08a0553979cf2d96a8b7803ea33e15e7"}, - {file = "websockets-10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9fd62c6dc83d5d35fb6a84ff82ec69df8f4657fff05f9cd6c7d9bec0dd57f0f6"}, - {file = "websockets-10.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3bbf080f3892ba1dc8838786ec02899516a9d227abe14a80ef6fd17d4fb57127"}, - {file = "websockets-10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5560558b0dace8312c46aa8915da977db02738ac8ecffbc61acfbfe103e10155"}, - {file = "websockets-10.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:667c41351a6d8a34b53857ceb8343a45c85d438ee4fd835c279591db8aeb85be"}, - {file = "websockets-10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:468f0031fdbf4d643f89403a66383247eb82803430b14fa27ce2d44d2662ca37"}, - {file = "websockets-10.1-cp310-cp310-win32.whl", hash = "sha256:d0d81b46a5c87d443e40ce2272436da8e6092aa91f5fbeb60d1be9f11eff5b4c"}, - {file = "websockets-10.1-cp310-cp310-win_amd64.whl", hash = "sha256:b68b6caecb9a0c6db537aa79750d1b592a841e4f1a380c6196091e65b2ad35f9"}, - {file = "websockets-10.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a249139abc62ef333e9e85064c27fefb113b16ffc5686cefc315bdaef3eefbc8"}, - {file = "websockets-10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8877861e3dee38c8d302eee0d5dbefa6663de3b46dc6a888f70cd7e82562d1f7"}, - {file = "websockets-10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e3872ae57acd4306ecf937d36177854e218e999af410a05c17168cd99676c512"}, - {file = "websockets-10.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b66e6d514f12c28d7a2d80bb2a48ef223342e99c449782d9831b0d29a9e88a17"}, - {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9f304a22ece735a3da8a51309bc2c010e23961a8f675fae46fdf62541ed62123"}, - {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:189ed478395967d6a98bb293abf04e8815349e17456a0a15511f1088b6cb26e4"}, - {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:08a42856158307e231b199671c4fce52df5786dd3d703f36b5d8ac76b206c485"}, - {file = "websockets-10.1-cp37-cp37m-win32.whl", hash = "sha256:3ef6f73854cded34e78390dbdf40dfdcf0b89b55c0e282468ef92646fce8d13a"}, - {file = "websockets-10.1-cp37-cp37m-win_amd64.whl", hash = "sha256:89e985d40d407545d5f5e2e58e1fdf19a22bd2d8cd54d20a882e29f97e930a0a"}, - {file = "websockets-10.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:002071169d2e44ce8eb9e5ebac9fbce142ba4b5146eef1cfb16b177a27662657"}, - {file = "websockets-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cfae282c2aa7f0c4be45df65c248481f3509f8c40ca8b15ed96c35668ae0ff69"}, - {file = "websockets-10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97b4b68a2ddaf5c4707ae79c110bfd874c5be3c6ac49261160fb243fa45d8bbb"}, - {file = "websockets-10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c9407719f42cb77049975410490c58a705da6af541adb64716573e550e5c9db"}, - {file = "websockets-10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d858fb31e5ac992a2cdf17e874c95f8a5b1e917e1fb6b45ad85da30734b223f"}, - {file = "websockets-10.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7bdd3d26315db0a9cf8a0af30ca95e0aa342eda9c1377b722e71ccd86bc5d1dd"}, - {file = "websockets-10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e259be0863770cb91b1a6ccf6907f1ac2f07eff0b7f01c249ed751865a70cb0d"}, - {file = "websockets-10.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6b014875fae19577a392372075e937ebfebf53fd57f613df07b35ab210f31534"}, - {file = "websockets-10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:98de71f86bdb29430fd7ba9997f47a6b10866800e3ea577598a786a785701bb0"}, - {file = "websockets-10.1-cp38-cp38-win32.whl", hash = "sha256:3a02ab91d84d9056a9ee833c254895421a6333d7ae7fff94b5c68e4fa8095519"}, - {file = "websockets-10.1-cp38-cp38-win_amd64.whl", hash = "sha256:7d6673b2753f9c5377868a53445d0c321ef41ff3c8e3b6d57868e72054bfce5f"}, - {file = "websockets-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ddab2dc69ee5ae27c74dbfe9d7bb6fee260826c136dca257faa1a41d1db61a89"}, - {file = "websockets-10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14e9cf68a08d1a5d42109549201aefba473b1d925d233ae19035c876dd845da9"}, - {file = "websockets-10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e4819c6fb4f336fd5388372cb556b1f3a165f3f68e66913d1a2fc1de55dc6f58"}, - {file = "websockets-10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05e7f098c76b0a4743716590bb8f9706de19f1ef5148d61d0cf76495ec3edb9c"}, - {file = "websockets-10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5bb6256de5a4fb1d42b3747b4e2268706c92965d75d0425be97186615bf2f24f"}, - {file = "websockets-10.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:888a5fa2a677e0c2b944f9826c756475980f1b276b6302e606f5c4ff5635be9e"}, - {file = "websockets-10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6fdec1a0b3e5630c58e3d8704d2011c678929fce90b40908c97dfc47de8dca72"}, - {file = "websockets-10.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:531d8eb013a9bc6b3ad101588182aa9b6dd994b190c56df07f0d84a02b85d530"}, - {file = "websockets-10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0d93b7cadc761347d98da12ec1930b5c71b2096f1ceed213973e3cda23fead9c"}, - {file = "websockets-10.1-cp39-cp39-win32.whl", hash = "sha256:d9b245db5a7e64c95816e27d72830e51411c4609c05673d1ae81eb5d23b0be54"}, - {file = "websockets-10.1-cp39-cp39-win_amd64.whl", hash = "sha256:882c0b8bdff3bf1bd7f024ce17c6b8006042ec4cceba95cf15df57e57efa471c"}, - {file = "websockets-10.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:10edd9d7d3581cfb9ff544ac09fc98cab7ee8f26778a5a8b2d5fd4b0684c5ba5"}, - {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa83174390c0ff4fc1304fbe24393843ac7a08fdd59295759c4b439e06b1536"}, - {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:483edee5abed738a0b6a908025be47f33634c2ad8e737edd03ffa895bd600909"}, - {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:816ae7dac2c6522cfa620947ead0ca95ac654916eebf515c94d7c28de5601a6e"}, - {file = "websockets-10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:1dafe98698ece09b8ccba81b910643ff37198e43521d977be76caf37709cf62b"}, - {file = "websockets-10.1.tar.gz", hash = "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d"}, + {file = "websockets-9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d144b350045c53c8ff09aa1cfa955012dd32f00c7e0862c199edcabb1a8b32da"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b4ad84b156cf50529b8ac5cc1638c2cf8680490e3fccb6121316c8c02620a2e4"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2cf04601633a4ec176b9cc3d3e73789c037641001dbfaf7c411f89cd3e04fcaf"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:5c8f0d82ea2468282e08b0cf5307f3ad022290ed50c45d5cb7767957ca782880"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:caa68c95bc1776d3521f81eeb4d5b9438be92514ec2a79fececda814099c8314"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d2c2d9b24d3c65b5a02cac12cbb4e4194e590314519ed49db2f67ef561c3cf58"}, + {file = "websockets-9.1-cp36-cp36m-win32.whl", hash = "sha256:f31722f1c033c198aa4a39a01905951c00bd1c74f922e8afc1b1c62adbcdd56a"}, + {file = "websockets-9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:3ddff38894c7857c476feb3538dd847514379d6dc844961dc99f04b0384b1b1b"}, + {file = "websockets-9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:51d04df04ed9d08077d10ccbe21e6805791b78eac49d16d30a1f1fe2e44ba0af"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f68c352a68e5fdf1e97288d5cec9296664c590c25932a8476224124aaf90dbcd"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b43b13e5622c5a53ab12f3272e6f42f1ce37cd5b6684b2676cb365403295cd40"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9147868bb0cc01e6846606cd65cbf9c58598f187b96d14dd1ca17338b08793bb"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:836d14eb53b500fd92bd5db2fc5894f7c72b634f9c2a28f546f75967503d8e25"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:48c222feb3ced18f3dc61168ca18952a22fb88e5eb8902d2bf1b50faefdc34a2"}, + {file = "websockets-9.1-cp37-cp37m-win32.whl", hash = "sha256:900589e19200be76dd7cbaa95e9771605b5ce3f62512d039fb3bc5da9014912a"}, + {file = "websockets-9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ab5ee15d3462198c794c49ccd31773d8a2b8c17d622aa184f669d2b98c2f0857"}, + {file = "websockets-9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e701a6c316b7067f1e8675c638036a796fe5116783a4c932e7eb8e305a3ffe"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b2e71c4670ebe1067fa8632f0d081e47254ee2d3d409de54168b43b0ba9147e0"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:230a3506df6b5f446fed2398e58dcaafdff12d67fe1397dff196411a9e820d02"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7df3596838b2a0c07c6f6d67752c53859a54993d4f062689fdf547cb56d0f84f"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:826ccf85d4514609219725ba4a7abd569228c2c9f1968e8be05be366f68291ec"}, + {file = "websockets-9.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0dd4eb8e0bbf365d6f652711ce21b8fd2b596f873d32aabb0fbb53ec604418cc"}, + {file = "websockets-9.1-cp38-cp38-win32.whl", hash = "sha256:1d0971cc7251aeff955aa742ec541ee8aaea4bb2ebf0245748fbec62f744a37e"}, + {file = "websockets-9.1-cp38-cp38-win_amd64.whl", hash = "sha256:7189e51955f9268b2bdd6cc537e0faa06f8fffda7fb386e5922c6391de51b077"}, + {file = "websockets-9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9e5fd6dbdf95d99bc03732ded1fc8ef22ebbc05999ac7e0c7bf57fe6e4e5ae2"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9e7fdc775fe7403dbd8bc883ba59576a6232eac96dacb56512daacf7af5d618d"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:597c28f3aa7a09e8c070a86b03107094ee5cdafcc0d55f2f2eac92faac8dc67d"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ad893d889bc700a5835e0a95a3e4f2c39e91577ab232a3dc03c262a0f8fc4b5c"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:1d6b4fddb12ab9adf87b843cd4316c4bd602db8d5efd2fb83147f0458fe85135"}, + {file = "websockets-9.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ebf459a1c069f9866d8569439c06193c586e72c9330db1390af7c6a0a32c4afd"}, + {file = "websockets-9.1-cp39-cp39-win32.whl", hash = "sha256:be5fd35e99970518547edc906efab29afd392319f020c3c58b0e1a158e16ed20"}, + {file = "websockets-9.1-cp39-cp39-win_amd64.whl", hash = "sha256:85db8090ba94e22d964498a47fdd933b8875a1add6ebc514c7ac8703eb97bbf0"}, + {file = "websockets-9.1.tar.gz", hash = "sha256:276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3"}, ] win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, @@ -3561,9 +3869,6 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] -xonsh = [ - {file = "xonsh-0.12.4.tar.gz", hash = "sha256:a3d394db471097762ecbdedcd35686efd1aac3b5885f614501403f6d09628a76"}, -] yapf = [ {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, diff --git a/pyproject.toml b/pyproject.toml index 538de497..7c7ee39e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ Shapely = "^1.8" fastapi = "^0.76" uvicorn = "^0.17" # End to end tests -playwright = "^1.21.0" +playwright = "^1" pytest-playwright = "^0.3.0" # Info about the system psutil = "^5.8" @@ -84,7 +84,8 @@ arrow = "^1.2.2" hikari = "^2.0.0-alpha.108" # Table plotting ptable = "^0.9.2" - +# Remote SQL DB +supabase = "^0.5.7" [tool.poetry.dev-dependencies] # Autoformatter @@ -112,7 +113,6 @@ scalene = "^1.3.16" # ipython = "^7.16" # Enable pre commit hooks pre-commit = "^2.15" -xonsh = {extras = ["full"], version = "^0.12.4"} [tool.poetry.scripts] # Can be launched via 'poetry run python_examples_main' diff --git a/run_tests.xsh b/run_tests.xsh index 417dcc3f..fa2a9be3 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -199,4 +199,4 @@ if __name__ == '__main__': xcli.dispatch(parser) if ANY_COMMAND_HAS_ERROR: sys.exit(1) - + sys.exit(0) From 062c4d52cad60bfb5b7bfce839cead306e195ab7 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 18 Jun 2022 17:37:32 +0200 Subject: [PATCH 113/391] Add !emotes command to discord bot --- discord_bot/.dockerignore | 3 + discord_bot/commands/public_emotes.py | 119 +++++++++++++++++++++++++ discord_bot/commands/public_mmr.py | 12 +-- discord_bot/commands/public_remind.py | 16 +++- discord_bot/db.py | 31 +++++-- discord_bot/main.py | 55 +++++++++--- discord_bot/poetry.lock | 75 ++++++++++++++-- discord_bot/pyproject.toml | 2 + discord_bot/run.sh | 4 +- discord_bot/supabase_async_client.py | 3 +- discord_bot/systemd/discordbot.service | 2 + discord_bot/test/__init__.py | 7 ++ discord_bot/test/test_bot.py | 3 - discord_bot/test/test_emotes.py | 82 +++++++++++++++++ discord_bot/test/test_remind_at.py | 2 +- discord_bot/test/test_remind_in.py | 4 +- poetry.lock | 35 ++++++-- pyproject.toml | 2 + python_examples/main.py | 7 +- 19 files changed, 417 insertions(+), 47 deletions(-) create mode 100644 discord_bot/commands/public_emotes.py create mode 100644 discord_bot/test/test_emotes.py diff --git a/discord_bot/.dockerignore b/discord_bot/.dockerignore index b926d727..0fff6a17 100644 --- a/discord_bot/.dockerignore +++ b/discord_bot/.dockerignore @@ -1 +1,4 @@ *test*/* +DISCORDKEY +SUPABASEURL +SUPABASEKEY diff --git a/discord_bot/commands/public_emotes.py b/discord_bot/commands/public_emotes.py new file mode 100644 index 00000000..68deea90 --- /dev/null +++ b/discord_bot/commands/public_emotes.py @@ -0,0 +1,119 @@ +import re +from collections import Counter +from dataclasses import dataclass +from typing import Counter as CounterType +from typing import List, Optional, Union + +from arrow import Arrow +from hikari import Embed, GatewayBot, GuildMessageCreateEvent, KnownCustomEmoji +from postgrest import APIResponse, AsyncSelectRequestBuilder +from simple_parsing import ArgumentParser + +from discord_bot.db import supabase + +# How many emojis to list when counting +TOP_EMOTE_LIMIT = 10 + + +@dataclass +class CountEmotesParserOptions: + # TODO: add user to check emotes from other users + all: bool = False + nostatic: bool = False + noanimated: bool = False + days: Optional[float] = None + + +public_count_emotes_parser = ArgumentParser() +public_count_emotes_parser.add_arguments(CountEmotesParserOptions, dest='params') + + +# pylint: disable=R0912 +async def public_count_emotes( + bot: GatewayBot, + event: GuildMessageCreateEvent, + message: str, +) -> Union[str, Embed]: + unknown_args: List[str] + try: + parsed, unknown_args = public_count_emotes_parser.parse_known_args(args=message.split()) + except SystemExit: + return 'Unable to parse input' + if unknown_args: + return f"Unknown params: {' '.join(unknown_args)}\n{public_count_emotes_parser.format_help()}" + params: CountEmotesParserOptions = parsed.params + + query: AsyncSelectRequestBuilder = ( + supabase.table('discord_messages').select( + 'what', + ) + # Get messages written in that guild + .eq( + 'guild_id', + event.guild_id, + ) + # Get messages with content similar to those of emojis + .like( + 'what', + '<%:%>', + ) + ) + if not params.all: + # Get messages by author_id + query = query.eq( + 'author_id', + event.author_id, + ) + if params.days is not None: + after: Arrow = Arrow.utcnow().shift(days=-params.days) + query = query.gt('when', str(after)) + + result_emotes: APIResponse = await query.execute() + + # What emotes to include in response + if params.nostatic and params.noanimated: + return '\'--nostatic\' and \'--noanimated\' does not work together' + if params.noanimated: + emote_pattern = r'<:([\d\w_]+):(\d+)>' + elif params.nostatic: + emote_pattern = r'' + else: + emote_pattern = r'' + + emote_counter: CounterType[str] = Counter() + for row in result_emotes.data: # + animated_emotes.data: + text = row['what'] + for match in re.finditer(emote_pattern, text): + # Validate/load emoji from cache + _emote_name, emote_snowflake = match.groups() + find_emote: Optional[KnownCustomEmoji] = bot.cache.get_emoji(int(emote_snowflake)) + if find_emote is None: + # Emote not found, must be from another server + # Or false positive to regex match + # emote_counter[emote_name] += 1 + pass + elif find_emote.is_animated: + # Emote can be rendered and is animated + emote_counter[find_emote.mention] += 1 + elif find_emote.is_managed or find_emote.role_ids: + # Requires subscriber status to display + # emote_counter[emote_name] += 1 + pass + else: + # Emote can be rendered + emote_counter[find_emote.mention] += 1 + + emote_names_sorted_by_usage: List[str] = sorted(emote_counter, key=lambda i: emote_counter[i], reverse=True) + emote_count: List[str] = [ + f'{emote_counter[name]} {name}' for index, name in enumerate( + emote_names_sorted_by_usage, + start=1, + ) + ] + emote_count = emote_count[:TOP_EMOTE_LIMIT] # Only show top 10 + # TODO: Plot as chart, so that external emojis are included? + description_text: str = f'Total emotes: {sum(emote_counter.values())}\n' + description_text += '\n'.join(emote_count) + title_name = 'Server' if params.all else f"{event.author.username}'s" + embed = Embed(title=f'{title_name} top {TOP_EMOTE_LIMIT} used emotes', description=description_text) + return embed diff --git a/discord_bot/commands/public_mmr.py b/discord_bot/commands/public_mmr.py index 01238483..7a59e917 100644 --- a/discord_bot/commands/public_mmr.py +++ b/discord_bot/commands/public_mmr.py @@ -2,7 +2,7 @@ from typing import List, Optional import aiohttp -from hikari import GuildMessageCreateEvent +from hikari import GatewayBot, GuildMessageCreateEvent # http://zetcode.com/python/prettytable/ from prettytable import PrettyTable # pip install PTable @@ -85,12 +85,14 @@ def format_result(self) -> List[str]: ] -async def public_mmr(_event: GuildMessageCreateEvent, query_name: str): +async def public_mmr( + _bot: GatewayBot, + _event: GuildMessageCreateEvent, + query_name: str, +): """The public command '!mmr name', will look up an account name, clan name or stream name and list several results as a markdown table using PrettyTable Usage: - !mmr twitch.tv/rotterdam08 - !mmr rotterdam - !mmr [zelos]""" + !mmr burny""" # Correct usage assert query_name async with aiohttp.ClientSession() as session: diff --git a/discord_bot/commands/public_remind.py b/discord_bot/commands/public_remind.py index 4c69c9fe..9fd2b9f5 100644 --- a/discord_bot/commands/public_remind.py +++ b/discord_bot/commands/public_remind.py @@ -242,6 +242,7 @@ async def _parse_time_shift_from_message(self, message: str) -> Optional[Tuple[a async def public_remind_in( self, + _bot: GatewayBot, event: GuildMessageCreateEvent, reminder_message: str, ): @@ -277,6 +278,7 @@ async def public_remind_in( async def public_remind_at( self, + _bot: GatewayBot, event: GuildMessageCreateEvent, reminder_message: str, ): @@ -331,7 +333,12 @@ async def public_remind_at( title='Usage of remindat command', description=f'Your reminder is in the past!\n{error_description}' ) - async def public_list_reminders(self, event: GuildMessageCreateEvent, _message: str): + async def public_list_reminders( + self, + _bot: GatewayBot, + event: GuildMessageCreateEvent, + _message: str, + ): """ List all of the user's reminders """ # id, time formatted by iso standard format, in 5 minutes, text user_reminders: List[Tuple[int, str, str, str]] = [] @@ -355,7 +362,12 @@ async def public_list_reminders(self, event: GuildMessageCreateEvent, _message: embed: Embed = Embed(title=f"{event.author.username}'s reminders", description=description) return embed - async def public_del_remind(self, event: GuildMessageCreateEvent, message: str): + async def public_del_remind( + self, + _bot: GatewayBot, + event: GuildMessageCreateEvent, + message: str, + ): """ Removes reminders from the user """ try: reminder_id_to_delete = int(message) - 1 diff --git a/discord_bot/db.py b/discord_bot/db.py index 6af77ca1..d1419934 100644 --- a/discord_bot/db.py +++ b/discord_bot/db.py @@ -1,16 +1,37 @@ import asyncio +import os from pathlib import Path +from typing import Generator -from postgrest import APIResponse +from postgrest.base_request_builder import APIResponse from discord_bot.supabase_async_client import Client, create_client -with (Path(__file__).parent / 'SUPABASEURL').open('r') as f: - url: str = f.read().strip() -with (Path(__file__).parent / 'SUPABASEKEY').open('r') as f: - key: str = f.read().strip() +# Load url and key from env or from file +url: str = os.getenv('SUPABASEURL') # type: ignore +if url is None: + SUPABASEURL_PATH = Path(__file__).parent / 'SUPABASEURL' + assert SUPABASEURL_PATH.is_file( + ), f'Missing file with supabase url: {SUPABASEURL_PATH}, you can get it from https://app.supabase.com/project//settings/api' + with SUPABASEURL_PATH.open('r') as f: + url = f.read().strip() +key: str = os.getenv('SUPABASEKEY') # type: ignore +if key is None: + SUPABASEKEY_PATH = Path(__file__).parent / 'SUPABASEKEY' + assert SUPABASEKEY_PATH.is_file( + ), f'Missing file with supabase key: {SUPABASEKEY_PATH}, you can get it from https://app.supabase.com/project//settings/api' + with SUPABASEKEY_PATH.open('r') as f: + key = f.read().strip() supabase: Client = create_client(url, key) +del url +del key + + +def flatten_result(result: APIResponse, column_name: str) -> Generator: + # If 'select' only queried one column, flatten result to an iterator + for row in result.data: + yield row[column_name] async def main(): diff --git a/discord_bot/main.py b/discord_bot/main.py index 337aac8a..0ca940d4 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -1,7 +1,7 @@ import asyncio import os from pathlib import Path -from typing import AsyncIterable, Awaitable, Callable, Union +from typing import AsyncIterable, Awaitable, Callable, Set, Union from hikari import ( Embed, @@ -9,23 +9,28 @@ GatewayGuild, GuildMessageCreateEvent, GuildReactionAddEvent, + GuildTextChannel, PartialChannel, StartedEvent, ) from loguru import logger +from discord_bot.commands.public_emotes import public_count_emotes from discord_bot.commands.public_mmr import public_mmr from discord_bot.commands.public_remind import Remind +from discord_bot.db import flatten_result, supabase -# Load key from file if it does not exist in env -if os.getenv('DISCORDKEY') is None: +# Load key from env or from file +token = os.getenv('DISCORDKEY') +if token is None: DISCORDKEY_PATH = Path(__file__).parent / 'DISCORDKEY' - assert DISCORDKEY_PATH.is_file(), f"File '{DISCORDKEY_PATH}' not found" + assert DISCORDKEY_PATH.is_file( + ), f"File '{DISCORDKEY_PATH}' not found, you can get it from https://discord.com/developers/applications//bot" with DISCORDKEY_PATH.open() as f: token = f.read() - os.environ['DISCORDKEY'] = token.strip() - del token -bot = GatewayBot(token=os.getenv('DISCORDKEY')) # type: ignore +bot = GatewayBot(token=token) # type: ignore +del token + PREFIX = '!' # Start reminder plugin @@ -42,11 +47,12 @@ async def generic_command_caller( event: GuildMessageCreateEvent, - function_to_call: Callable[[GuildMessageCreateEvent, str], Awaitable[Union[Embed, str]]], + function_to_call: Callable[[GatewayBot, GuildMessageCreateEvent, str], Awaitable[Union[Embed, str]]], message: str, add_remove_emoji: bool = False, ) -> None: """ + @param event @param function_to_call: A function to be called with the given message, expects function to return an Embed or string @param message: Parsed messaged by the user, without the command @param add_remove_emoji: If true, bot will react to its own message with a 'X' emoji @@ -56,7 +62,7 @@ async def generic_command_caller( if not channel: return # Call the given function with the event and message - response: Union[Embed, str] = await function_to_call(event, message) + response: Union[Embed, str] = await function_to_call(bot, event, message) if isinstance(response, Embed): sent_message = await channel.send(f'{event.author.mention}', embed=response) else: @@ -75,10 +81,35 @@ async def loop_function() -> None: async def get_all_servers() -> AsyncIterable[GatewayGuild]: - server: GatewayGuild all_connected_servers = bot.cache.get_available_guilds_view() + server: GatewayGuild + + added_messages = await supabase.table('discord_messages').select('message_id').execute() + message_ids_already_exist: Set[int] = set(flatten_result(added_messages, 'message_id')) + for server in all_connected_servers.values(): yield server + # Add all messages from channel "chat" to DB + if server.id == 384968030423351298: + for channel in server.get_channels().values(): + if channel.name == 'chat' and isinstance(channel, GuildTextChannel): + async for message in channel.fetch_history(): + if message.id in message_ids_already_exist: + continue + # TODO Use bulk insert via List[dict] + await ( + supabase.table('discord_messages').insert( + { + 'message_id': message.id, + 'guild_id': server.id, + 'channel_id': channel.id, + 'author_id': message.author.id, + 'who': str(message.author), + 'when': str(message.created_at), + 'what': message.content, + } + ).execute() + ) # all_connected_servers = bot.cache.get_guilds_view() # for server in all_connected_servers.values(): @@ -143,6 +174,8 @@ async def handle_new_message(event: GuildMessageCreateEvent) -> None: if not event.is_human or not event.content: return + # TODO On new message, add to DB + # guild = event.get_guild() # member = event.get_member() # @@ -164,6 +197,7 @@ async def handle_commands(event: GuildMessageCreateEvent, command: str, message: 'reminders': my_reminder.public_list_reminders, 'delreminder': my_reminder.public_del_remind, 'mmr': public_mmr, + 'emotes': public_count_emotes, } if command in function_mapping: function = function_mapping[command] @@ -178,6 +212,7 @@ async def handle_commands(event: GuildMessageCreateEvent, command: str, message: guild = event.get_guild() if guild: b = await guild.fetch_emojis() + animated = next(i for i in b if i.is_animated) await event.message.respond(f'Pong! {bot.heartbeat_latency * 1_000:.0f}ms {b[0]} {animated}') diff --git a/discord_bot/poetry.lock b/discord_bot/poetry.lock index 348b1fdb..0d2dbf64 100644 --- a/discord_bot/poetry.lock +++ b/discord_bot/poetry.lock @@ -157,7 +157,7 @@ click = "*" [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -226,6 +226,17 @@ python-versions = "*" [package.dependencies] setuptools_scm = "*" +[[package]] +name = "exceptiongroup" +version = "1.0.0rc8" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "frozenlist" version = "1.3.0" @@ -334,7 +345,7 @@ http2 = ["h2 (>=3,<5)"] [[package]] name = "hypothesis" -version = "6.47.0" +version = "6.47.3" description = "A library for property-based testing" category = "dev" optional = false @@ -342,6 +353,7 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=19.2.0" +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] @@ -453,6 +465,14 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" +optional = false +python-versions = "*" + [[package]] name = "packaging" version = "21.3" @@ -761,6 +781,18 @@ tomli = ">=1.0.0" test = ["pytest (>=6.2)", "virtualenv (>20)"] toml = ["setuptools (>=42)"] +[[package]] +name = "simple-parsing" +version = "0.0.20" +description = "A small utility for simplifying and cleaning up argument parsing scripts." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = "*" +typing-inspect = {version = "*", markers = "python_version < \"3.9\""} + [[package]] name = "six" version = "1.16.0" @@ -890,6 +922,18 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "typing-inspect" +version = "0.7.1" +description = "Runtime inspection utilities for typing module." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + [[package]] name = "urllib3" version = "1.26.9" @@ -957,7 +1001,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "d8d60eb67472f8ffb97e08dc9ca511ae06753788df3058cfe29d56e5a29704e1" +content-hash = "859c44057553b42733c19a497eb77896296d7f61536852843877c5d9a36c30ec" [metadata.files] aiohttp = [ @@ -1131,8 +1175,8 @@ click-log = [ {file = "click_log-0.4.0-py2.py3-none-any.whl", hash = "sha256:a43e394b528d52112af599f2fc9e4b7cf3c15f94e53581f74fa6867e68c91756"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] colorlog = [ {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, @@ -1173,6 +1217,10 @@ docutils = [ dotty-dict = [ {file = "dotty_dict-1.3.0.tar.gz", hash = "sha256:eb0035a3629ecd84397a68f1f42f1e94abd1c34577a19cd3eacad331ee7cbaf0"}, ] +exceptiongroup = [ + {file = "exceptiongroup-1.0.0rc8-py3-none-any.whl", hash = "sha256:ab0a968e1ef769e55d9a596f4a89f7be9ffedbc9fdefdb77cc68cf5c33ce1035"}, + {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, +] frozenlist = [ {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, @@ -1263,8 +1311,8 @@ httpx = [ {file = "httpx-0.21.3.tar.gz", hash = "sha256:7a3eb67ef0b8abbd6d9402248ef2f84a76080fa1c839f8662e6eb385640e445a"}, ] hypothesis = [ - {file = "hypothesis-6.47.0-py3-none-any.whl", hash = "sha256:76a7d16f78b5691db34ef87fa677d020dd86189f6b748adf801088743b66c889"}, - {file = "hypothesis-6.47.0.tar.gz", hash = "sha256:dd88c57f45032fc3d84596e426d8e3d67f88eda2d8a2d96a5697def036a7e0c7"}, + {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, + {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -1355,6 +1403,10 @@ multidict = [ {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, @@ -1483,6 +1535,10 @@ setuptools-scm = [ {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, ] +simple-parsing = [ + {file = "simple_parsing-0.0.20-py3-none-any.whl", hash = "sha256:a65d60d0f400defc9ab7867b549fa0d6ca77f9da7c5dfdb3dd3b494262f92b21"}, + {file = "simple_parsing-0.0.20.tar.gz", hash = "sha256:c99e0a03f9b5eb599bb70ca04cf23a3e511298b1f221502c29c6a7e6c3dabe9f"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -1531,6 +1587,11 @@ typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, ] +typing-inspect = [ + {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, + {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, + {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, +] urllib3 = [ {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml index 0191a0f9..f00dc8db 100644 --- a/discord_bot/pyproject.toml +++ b/discord_bot/pyproject.toml @@ -16,6 +16,8 @@ loguru = "^0.6.0" ptable = "^0.9.2" # Remote SQL DB supabase = "^0.5.7" +# Argparse with dataclass +simple-parsing = "^0.0.20" [tool.poetry.dev-dependencies] # Test library diff --git a/discord_bot/run.sh b/discord_bot/run.sh index 08099346..21874b84 100644 --- a/discord_bot/run.sh +++ b/discord_bot/run.sh @@ -1,5 +1,7 @@ docker build -t discord_bot_image . docker run --rm --name discord_bot \ --mount type=bind,source="$(pwd)/data",destination=/root/discord_bot/data \ + --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ + --mount type=bind,source="$(pwd)/SUPABASEURL",destination=/root/discord_bot/SUPABASEURL,readonly \ + --mount type=bind,source="$(pwd)/SUPABASEKEY",destination=/root/discord_bot/SUPABASEKEY,readonly \ discord_bot_image -# --mount type=bind,source="$(pwd)/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ diff --git a/discord_bot/supabase_async_client.py b/discord_bot/supabase_async_client.py index df0841a1..aee5bcbc 100644 --- a/discord_bot/supabase_async_client.py +++ b/discord_bot/supabase_async_client.py @@ -1,6 +1,7 @@ from typing import Any, Coroutine, Dict -from postgrest import AsyncFilterRequestBuilder, AsyncPostgrestClient, AsyncRequestBuilder +from postgrest._async.client import AsyncPostgrestClient +from postgrest._async.request_builder import AsyncFilterRequestBuilder, AsyncRequestBuilder from supabase.lib.auth_client import SupabaseAuthClient from supabase.lib.client_options import ClientOptions from supabase.lib.storage_client import SupabaseStorageClient diff --git a/discord_bot/systemd/discordbot.service b/discord_bot/systemd/discordbot.service index 9be740dd..92cec365 100644 --- a/discord_bot/systemd/discordbot.service +++ b/discord_bot/systemd/discordbot.service @@ -3,6 +3,8 @@ ExecStart=/usr/bin/docker run --rm --name discord_bot --env STAGE=PROD \ --mount type=bind,source="/home/discordbot/data",destination=/root/discord_bot/data \ --mount type=bind,source="/home/discordbot/DISCORDKEY",destination=/root/discord_bot/DISCORDKEY,readonly \ + --mount type=bind,source="/home/discordbot/SUPABASEURL",destination=/root/discord_bot/SUPABASEURL,readonly \ + --mount type=bind,source="/home/discordbot/SUPABASEKEY",destination=/root/discord_bot/SUPABASEKEY,readonly \ burnysc2/discord_bot:latest Restart=always RestartSec=20 diff --git a/discord_bot/test/__init__.py b/discord_bot/test/__init__.py index e69de29b..5cfacc19 100644 --- a/discord_bot/test/__init__.py +++ b/discord_bot/test/__init__.py @@ -0,0 +1,7 @@ +import os + +# Set dummy keys for discord bot +os.environ['DISCORDKEY'] = 'test_key' +# Set dummy keys for supabase +os.environ['SUPABASEURL'] = 'test_url' +os.environ['SUPABASEKEY'] = 'test_key' diff --git a/discord_bot/test/test_bot.py b/discord_bot/test/test_bot.py index a481bd83..ec8d7da4 100644 --- a/discord_bot/test/test_bot.py +++ b/discord_bot/test/test_bot.py @@ -1,10 +1,7 @@ -import os from unittest.mock import AsyncMock, patch from hikari import GatewayBot -# Set key before bot import -os.environ['DISCORDKEY'] = 'test_key' from discord_bot.main import bot diff --git a/discord_bot/test/test_emotes.py b/discord_bot/test/test_emotes.py new file mode 100644 index 00000000..bb9e6df7 --- /dev/null +++ b/discord_bot/test/test_emotes.py @@ -0,0 +1,82 @@ +from typing import Optional +from unittest.mock import AsyncMock, Mock, patch + +import pytest +from hikari import Embed, KnownCustomEmoji, Snowflake +from hypothesis import given +from hypothesis import strategies as st +from postgrest import APIResponse, AsyncSelectRequestBuilder + +from discord_bot.commands.public_emotes import TOP_EMOTE_LIMIT, public_count_emotes, public_count_emotes_parser + + +@given( + st.booleans(), + st.booleans(), + st.booleans(), + st.one_of(st.none(), st.floats(min_value=0, max_value=1e6, allow_nan=False, allow_infinity=False)), +) +def test_count_emotes_parser(all_: bool, nostatic: bool, noanimated: bool, days: Optional[int]): + params = [] + if all_: + params.append('--all') + if nostatic: + params.append('--nostatic') + if noanimated: + params.append('--noanimated') + if days is not None: + params.append('--days') + params.append(f'{days}') + + try: + parsed, unknown_args = public_count_emotes_parser.parse_known_args(args=params) + except SystemExit: + return + + assert unknown_args == [] + assert parsed.params.all is all_ + assert parsed.params.nostatic is nostatic + assert parsed.params.noanimated is noanimated + assert parsed.params.days == days + + +# TODO Test error case + + +def fake_get_emoji(value: int) -> KnownCustomEmoji: + # pylint: disable=E0110 + return KnownCustomEmoji( + id=Snowflake(value), + name='some_emote', + is_animated=False, + app=None, # type: ignore + guild_id=Snowflake(123), + role_ids=[], + user=None, + is_colons_required=False, + is_managed=False, + is_available=False, + ) + + +@pytest.mark.asyncio +async def test_public_count_emotes(): + fake_bot = Mock() + fake_bot.cache.get_emoji = fake_get_emoji + fake_event = Mock() + fake_event.guild_id = 123 + fake_event.author_id = 456 + fake_event.author.username = 'some_username' + message = '--days 5' + data = [{'what': '<:some_emote:123456789>'}, {'what': '<:some_emote:123456789>'}] + + with patch.object(AsyncSelectRequestBuilder, 'execute', AsyncMock()) as execute: + execute.return_value = APIResponse(data=data) + result = await public_count_emotes(fake_bot, fake_event, message) + + assert isinstance(result, Embed) + assert result.title == f"{fake_event.author.username}'s top {TOP_EMOTE_LIMIT} used emotes" + assert result.description == f'Total emotes: {len(data)}\n{len(data)} <:some_emote:123456789>' + + +# TODO Test various guild, user and emote variations diff --git a/discord_bot/test/test_remind_at.py b/discord_bot/test/test_remind_at.py index 747645f5..9de7dd76 100644 --- a/discord_bot/test/test_remind_at.py +++ b/discord_bot/test/test_remind_at.py @@ -34,7 +34,6 @@ def create_date_time_string(_year: int, _month: int, _day: int, _hour: int, _min return date_time -@pytest.mark.asyncio @settings(max_examples=100) @given( # Year @@ -52,6 +51,7 @@ def create_date_time_string(_year: int, _month: int, _day: int, _hour: int, _min # Message st.text(min_size=1), ) +@pytest.mark.asyncio async def test_parsing_date_and_time_from_message_success(_year, _month, _day, _hour, _minute, _second, _message): # Dont care about empty strings, or just space or just new line characters if not _message.strip(): diff --git a/discord_bot/test/test_remind_in.py b/discord_bot/test/test_remind_in.py index b06b38a2..c95a0145 100644 --- a/discord_bot/test/test_remind_in.py +++ b/discord_bot/test/test_remind_in.py @@ -30,7 +30,6 @@ def create_time_shift_string(_day, _hour, _minute, _second): return shift.strip() -@pytest.mark.asyncio @settings(max_examples=100) @example(_day=1_000_000, _hour=0, _minute=0, _second=0, _message='a') @example(_day=0, _hour=1_000_000, _minute=0, _second=0, _message='a') @@ -48,6 +47,7 @@ def create_time_shift_string(_day, _hour, _minute, _second): # Message st.text(min_size=1), ) +@pytest.mark.asyncio async def test_parsing_date_and_time_from_message_success(_day, _hour, _minute, _second, _message): # Dont care about empty strings, or just space or just new line characters if not _message.strip(): @@ -67,7 +67,6 @@ async def test_parsing_date_and_time_from_message_success(_day, _hour, _minute, assert result[1] == _message.strip() -@pytest.mark.asyncio @settings(max_examples=100) @example(_day=10_000_000, _hour=0, _minute=0, _second=0, _message='a') @example(_day=0, _hour=10_000_000, _minute=0, _second=0, _message='a') @@ -85,6 +84,7 @@ async def test_parsing_date_and_time_from_message_success(_day, _hour, _minute, # Message st.text(min_size=1), ) +@pytest.mark.asyncio async def test_parsing_date_and_time_from_message_failure(_day, _hour, _minute, _second, _message): r = Remind(client=None) diff --git a/poetry.lock b/poetry.lock index b88fe3fd..020d67b0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1228,12 +1228,15 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pyee" -version = "8.1.0" +version = "9.0.4" description = "A port of node.js's EventEmitter to python." category = "main" optional = false python-versions = "*" +[package.dependencies] +typing-extensions = "*" + [[package]] name = "pygments" version = "2.12.0" @@ -1244,7 +1247,7 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.14.2" +version = "2.14.3" description = "python code static checker" category = "dev" optional = false @@ -1252,7 +1255,7 @@ python-versions = ">=3.7.2" [package.dependencies] astroid = ">=2.11.6,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" @@ -1719,6 +1722,18 @@ all = ["pytest", "pytest-cov", "numpy"] test = ["pytest", "pytest-cov"] vectorized = ["numpy"] +[[package]] +name = "simple-parsing" +version = "0.0.20" +description = "A small utility for simplifying and cleaning up argument parsing scripts." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = "*" +typing-inspect = {version = "*", markers = "python_version < \"3.9\""} + [[package]] name = "six" version = "1.16.0" @@ -2107,7 +2122,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "308fe0ec394959e6c85ea9893c2c14ddc70f96ac0c08800279a1b7e2e86f0dc0" +content-hash = "a562da874da26e208b359ca6b2fe5e07b8f984d4bf5bf9710b162c140041345d" [metadata.files] aiocontextvars = [ @@ -3233,16 +3248,16 @@ pydantic = [ {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, ] pyee = [ - {file = "pyee-8.1.0-py2.py3-none-any.whl", hash = "sha256:383973b63ad7ed5e3c0311f8b179c52981f9e7b3eaea0e9a830d13ec34dde65f"}, - {file = "pyee-8.1.0.tar.gz", hash = "sha256:92dacc5bd2bdb8f95aa8dd2585d47ca1c4840e2adb95ccf90034d64f725bfd31"}, + {file = "pyee-9.0.4-py2.py3-none-any.whl", hash = "sha256:9f066570130c554e9cc12de5a9d86f57c7ee47fece163bbdaa3e9c933cfbdfa5"}, + {file = "pyee-9.0.4.tar.gz", hash = "sha256:2770c4928abc721f46b705e6a72b0c59480c4a69c9a83ca0b00bb994f1ea4b32"}, ] pygments = [ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.14.2-py3-none-any.whl", hash = "sha256:592d0a4d2ffa8e33020209d255827c5a310499cdc023d156187bc677d86bd495"}, - {file = "pylint-2.14.2.tar.gz", hash = "sha256:482f1329d4b6b9e52599754a2e502c0ed91ebdfd0992a2299b7fa136a6c12349"}, + {file = "pylint-2.14.3-py3-none-any.whl", hash = "sha256:6757a027e15816be23625b079ebc45464e4c9d9dde0c826d18beee53fe22a2e7"}, + {file = "pylint-2.14.3.tar.gz", hash = "sha256:4e1378f815c63e7e44590d0d339ed6435f5281d0a0cc357d29a86ea0365ef868"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -3587,6 +3602,10 @@ shapely = [ {file = "Shapely-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:3423299254deec075e79fb7dc7909d702104e4167149de7f45510c3a6342eeea"}, {file = "Shapely-1.8.2.tar.gz", hash = "sha256:572af9d5006fd5e3213e37ee548912b0341fb26724d6dc8a4e3950c10197ebb6"}, ] +simple-parsing = [ + {file = "simple_parsing-0.0.20-py3-none-any.whl", hash = "sha256:a65d60d0f400defc9ab7867b549fa0d6ca77f9da7c5dfdb3dd3b494262f92b21"}, + {file = "simple_parsing-0.0.20.tar.gz", hash = "sha256:c99e0a03f9b5eb599bb70ca04cf23a3e511298b1f221502c29c6a7e6c3dabe9f"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, diff --git a/pyproject.toml b/pyproject.toml index 7c7ee39e..911efbb2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,6 +86,8 @@ hikari = "^2.0.0-alpha.108" ptable = "^0.9.2" # Remote SQL DB supabase = "^0.5.7" +# Argparse with dataclass +simple-parsing = "^0.0.20" [tool.poetry.dev-dependencies] # Autoformatter diff --git a/python_examples/main.py b/python_examples/main.py index 537da57f..9dfce46f 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -1,7 +1,10 @@ -import asyncio import sys -import time from pathlib import Path + +sys.path.append(str(Path(__file__).parents[1])) + +import asyncio +import time from platform import platform from typing import List From 227b32d2b6aed3d90af5a56a0b26286bab6dbf63 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 18 Jun 2022 17:42:47 +0200 Subject: [PATCH 114/391] Fix read of key --- discord_bot/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discord_bot/main.py b/discord_bot/main.py index 0ca940d4..10c08c0f 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -27,7 +27,7 @@ assert DISCORDKEY_PATH.is_file( ), f"File '{DISCORDKEY_PATH}' not found, you can get it from https://discord.com/developers/applications//bot" with DISCORDKEY_PATH.open() as f: - token = f.read() + token = f.read().strip() bot = GatewayBot(token=token) # type: ignore del token From a51044092aa4166eb9ba71fd13b0d3dd8b3dd9b0 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 18 Jun 2022 17:50:19 +0200 Subject: [PATCH 115/391] Update lock file --- discord_bot/poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discord_bot/poetry.lock b/discord_bot/poetry.lock index 0d2dbf64..76289583 100644 --- a/discord_bot/poetry.lock +++ b/discord_bot/poetry.lock @@ -1001,7 +1001,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "859c44057553b42733c19a497eb77896296d7f61536852843877c5d9a36c30ec" +content-hash = "21cfc7e26d4d7aa208cf925da7d389ea8f18d4eb1073f7192405c858b5918dbd" [metadata.files] aiohttp = [ From 448d0f484757b39917a2b2d81f9183609b84f3b3 Mon Sep 17 00:00:00 2001 From: burny Date: Sat, 18 Jun 2022 17:51:30 +0200 Subject: [PATCH 116/391] Run 'poetry update' --- fastapi_server/poetry.lock | 262 +++++++++++++++++------------------- python_examples/poetry.lock | 46 +++---- 2 files changed, 144 insertions(+), 164 deletions(-) diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock index 235b62e5..55787526 100644 --- a/fastapi_server/poetry.lock +++ b/fastapi_server/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "anyio" -version = "3.5.0" +version = "3.6.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false @@ -12,12 +12,12 @@ sniffio = ">=1.1" [package.extras] doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] [[package]] name = "asgiref" -version = "3.5.0" +version = "3.5.2" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -50,11 +50,11 @@ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (> [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "charset-normalizer" @@ -69,18 +69,18 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.0.4" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -88,7 +88,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "dataclasses-json" -version = "0.5.6" +version = "0.5.7" description = "Easily serialize dataclasses to and from JSON" category = "main" optional = false @@ -102,6 +102,17 @@ typing-inspect = ">=0.4.0" [package.extras] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] +[[package]] +name = "exceptiongroup" +version = "1.0.0rc8" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "fastapi" version = "0.70.1" @@ -130,7 +141,7 @@ python-versions = ">=3.6" [[package]] name = "hypothesis" -version = "6.39.3" +version = "6.47.3" description = "A library for property-based testing" category = "dev" optional = false @@ -138,10 +149,11 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=19.2.0" +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] -all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] +all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] cli = ["click (>=7.0)", "black (>=19.10b0)", "rich (>=9.0.0)"] codemods = ["libcst (>=0.3.16)"] dateutil = ["python-dateutil (>=1.4)"] @@ -154,7 +166,7 @@ pandas = ["pandas (>=0.25)"] pytest = ["pytest (>=4.6)"] pytz = ["pytz (>=2014.1)"] redis = ["redis (>=3.0.0)"] -zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] [[package]] name = "idna" @@ -189,16 +201,19 @@ dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3 [[package]] name = "marshmallow" -version = "3.14.1" +version = "3.16.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" + +[package.dependencies] +packaging = ">=17.0" [package.extras] -dev = ["pytest", "pytz", "simplejson", "mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)", "tox"] -docs = ["sphinx (==4.3.0)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.7)"] -lint = ["mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -232,7 +247,7 @@ python-versions = "*" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -261,8 +276,8 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "pydantic" -version = "1.9.0" -description = "Data validation and settings management using python 3.6 type hinting" +version = "1.9.1" +description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.6.1" @@ -276,22 +291,22 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pyparsing" -version = "3.0.7" -description = "Python parsing module" -category = "dev" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.8" [package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +diagrams = ["railroad-diagrams", "jinja2"] [[package]] name = "pytest" -version = "7.0.1" +version = "7.1.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} @@ -320,17 +335,6 @@ pytest = ">=5.4.0" [package.extras] testing = ["coverage", "hypothesis (>=5.7.1)"] -[[package]] -name = "python-dotenv" -version = "0.19.2" -description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.extras] -cli = ["click (>=5.0)"] - [[package]] name = "python-multipart" version = "0.0.5" @@ -344,7 +348,7 @@ six = ">=1.4.0" [[package]] name = "pytz" -version = "2021.3" +version = "2022.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -352,20 +356,20 @@ python-versions = "*" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2.0.0,<2.1.0" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] @@ -406,14 +410,6 @@ anyio = ">=3.0.0,<4" [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - [[package]] name = "tomli" version = "2.0.1" @@ -424,11 +420,11 @@ python-versions = ">=3.7" [[package]] name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" +version = "4.2.0" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "typing-inspect" @@ -444,14 +440,14 @@ typing-extensions = ">=3.7.4" [[package]] name = "urllib3" -version = "1.26.8" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] -brotli = ["brotlipy (>=0.6.0)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] @@ -482,14 +478,6 @@ python-versions = ">=3.5" [package.extras] dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] -[[package]] -name = "yapf" -version = "0.32.0" -description = "A formatter for Python code." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "zephyrus-sc2-parser" version = "0.3.7" @@ -506,16 +494,16 @@ requests = "*" [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "6e8768ec859cf5177b80eec5ea4a4684b7c4530e8a1cfd82f2ec962776a7c45a" +content-hash = "bbbd2934c22a413160f300a12644a2eb688cd22f2a496ca2508cd5e8655ce9d0" [metadata.files] anyio = [ - {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, - {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, + {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, + {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, ] asgiref = [ - {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, - {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, + {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, + {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, ] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, @@ -526,24 +514,28 @@ attrs = [ {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, - {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] dataclasses-json = [ - {file = "dataclasses-json-0.5.6.tar.gz", hash = "sha256:1f60be3405dee30b86ffbf6a436db8ba5efaeeb676bfda358e516a97aa7dfce4"}, - {file = "dataclasses_json-0.5.6-py3-none-any.whl", hash = "sha256:1d7f3a284a49d350ddbabde0e7d0c5ffa34a144aaf1bcb5b9f2c87673ff0c76e"}, + {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, + {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, +] +exceptiongroup = [ + {file = "exceptiongroup-1.0.0rc8-py3-none-any.whl", hash = "sha256:ab0a968e1ef769e55d9a596f4a89f7be9ffedbc9fdefdb77cc68cf5c33ce1035"}, + {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, ] fastapi = [ {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, @@ -554,8 +546,8 @@ h11 = [ {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hypothesis = [ - {file = "hypothesis-6.39.3-py3-none-any.whl", hash = "sha256:92f1c58e994e109897fd9b3c6d44eb3bd45ed95bf3c079c35f36fa0801fc5f31"}, - {file = "hypothesis-6.39.3.tar.gz", hash = "sha256:f496dd053fb951b6da9611481fb4e54eeab1d37b594da5efe869083fad3ae621"}, + {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, + {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -570,8 +562,8 @@ loguru = [ {file = "loguru-0.5.3.tar.gz", hash = "sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"}, ] marshmallow = [ - {file = "marshmallow-3.14.1-py3-none-any.whl", hash = "sha256:04438610bc6dadbdddb22a4a55bcc7f6f8099e69580b2e67f5a681933a1f4400"}, - {file = "marshmallow-3.14.1.tar.gz", hash = "sha256:4c05c1684e0e97fe779c62b91878f173b937fe097b356cd82f793464f5bc6138"}, + {file = "marshmallow-3.16.0-py3-none-any.whl", hash = "sha256:53a1e0ee69f79e1f3e80d17393b25cfc917eda52f859e8183b4af72c3390c1f1"}, + {file = "marshmallow-3.16.0.tar.gz", hash = "sha256:a762c1d8b2bcb0e5c8e964850d03f9f3bffd6a12b626f3c14b9d6b1841999af5"}, ] marshmallow-enum = [ {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, @@ -597,68 +589,64 @@ py = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] pydantic = [ - {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, - {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, - {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, - {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, - {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, - {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, - {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, - {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, - {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, - {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, - {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, + {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, + {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, + {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, + {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, + {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, + {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, + {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, + {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, + {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, + {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, + {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, + {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, + {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, + {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, + {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, + {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, + {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, + {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, + {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, + {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, + {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, + {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, ] pyparsing = [ - {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, - {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pytest = [ - {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, - {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, ] pytest-asyncio = [ {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, ] -python-dotenv = [ - {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"}, - {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, -] python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] pytz = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, + {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, + {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -676,17 +664,13 @@ starlette = [ {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, ] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] typing-extensions = [ - {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, - {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, ] typing-inspect = [ {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, @@ -694,8 +678,8 @@ typing-inspect = [ {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, ] urllib3 = [ - {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, - {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] uvicorn = [ {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, @@ -705,10 +689,6 @@ win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ] -yapf = [ - {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, - {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, -] zephyrus-sc2-parser = [ {file = "zephyrus-sc2-parser-0.3.7.tar.gz", hash = "sha256:384b3f20b456154fc9048d5350651fd08c4ffbfe8eabe1eaf0959c09a23d8452"}, {file = "zephyrus_sc2_parser-0.3.7-py3-none-any.whl", hash = "sha256:4b1a5df798257c650606fefdb4d5aba1aa3aee9984bfe072071a5ead1cd0949e"}, diff --git a/python_examples/poetry.lock b/python_examples/poetry.lock index ae1dd3e4..4e9ca742 100644 --- a/python_examples/poetry.lock +++ b/python_examples/poetry.lock @@ -163,7 +163,7 @@ typing-extensions = ">=3.10.0" [[package]] name = "certifi" -version = "2022.5.18.1" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -220,7 +220,7 @@ python-versions = ">=3.6" [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -406,7 +406,7 @@ docs = ["sphinx"] [[package]] name = "hypothesis" -version = "6.47.2" +version = "6.47.3" description = "A library for property-based testing" category = "dev" optional = false @@ -414,7 +414,7 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=19.2.0" -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11.0b1\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] @@ -492,7 +492,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [[package]] name = "importlib-resources" -version = "5.7.1" +version = "5.8.0" description = "Read resources from Python packages" category = "main" optional = false @@ -805,7 +805,7 @@ invoke = ["invoke (>=1.3)"] [[package]] name = "peewee" -version = "3.14.10" +version = "3.15.0" description = "a little orm" category = "main" optional = false @@ -935,15 +935,15 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.14.1" +version = "2.14.3" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.11.6,<=2.12.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" @@ -1305,7 +1305,7 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy2-stubs" -version = "0.0.2a23" +version = "0.0.2a24" description = "Typing Stubs for SQLAlchemy 1.4" category = "main" optional = false @@ -1614,8 +1614,8 @@ bokeh = [ {file = "bokeh-2.4.3.tar.gz", hash = "sha256:ef33801161af379665ab7a34684f2209861e3aefd5c803a21fbbb99d94874b03"}, ] certifi = [ - {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, - {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, @@ -1686,8 +1686,8 @@ cloudpickle = [ {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, @@ -1917,8 +1917,8 @@ greenlet = [ {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, ] hypothesis = [ - {file = "hypothesis-6.47.2-py3-none-any.whl", hash = "sha256:d6a7bb1b695edc57388b86960138d23aeddcb95192cff49755e280e3296558c9"}, - {file = "hypothesis-6.47.2.tar.gz", hash = "sha256:9c01a225eada7d74d38430e3e91e659e3a892fbc2b15f7b051779ded6ab73ee7"}, + {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, + {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, ] identify = [ {file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"}, @@ -1987,8 +1987,8 @@ importlib-metadata = [ {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, ] importlib-resources = [ - {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, - {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, + {file = "importlib_resources-5.8.0-py3-none-any.whl", hash = "sha256:7952325ffd516c05a8ad0858c74dff2c3343f136fe66a6002b2623dd1d43f223"}, + {file = "importlib_resources-5.8.0.tar.gz", hash = "sha256:568c9f16cb204f9decc8d6d24a572eeea27dacbb4cee9e6b03a8025736769751"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, @@ -2351,7 +2351,7 @@ paramiko = [ {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, ] peewee = [ - {file = "peewee-3.14.10.tar.gz", hash = "sha256:23271422b332c82d30c92597dee905ee831b56c6d99c33e05901e6891c75fe15"}, + {file = "peewee-3.15.0.tar.gz", hash = "sha256:48eac70be812ac84daa5400fb8e7b545e0c83adcfa05c8e2a8612f9ced4da495"}, ] pendulum = [ {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, @@ -2515,8 +2515,8 @@ pygments = [ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] pylint = [ - {file = "pylint-2.14.1-py3-none-any.whl", hash = "sha256:bb71e6d169506de585edea997e48d9ff20c0dc0e2fbc1d166bad6b640120326b"}, - {file = "pylint-2.14.1.tar.gz", hash = "sha256:549261e0762c3466cc001024c4419c08252cb8c8d40f5c2c6966fea690e7fe2a"}, + {file = "pylint-2.14.3-py3-none-any.whl", hash = "sha256:6757a027e15816be23625b079ebc45464e4c9d9dde0c826d18beee53fe22a2e7"}, + {file = "pylint-2.14.3.tar.gz", hash = "sha256:4e1378f815c63e7e44590d0d339ed6435f5281d0a0cc357d29a86ea0365ef868"}, ] pymongo = [ {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, @@ -2864,8 +2864,8 @@ sqlalchemy = [ {file = "SQLAlchemy-1.4.37.tar.gz", hash = "sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea"}, ] sqlalchemy2-stubs = [ - {file = "sqlalchemy2-stubs-0.0.2a23.tar.gz", hash = "sha256:a13d94e23b5b0da8ee21986ef8890788a1f2eb26c2a9f39424cc933e4e7e87ff"}, - {file = "sqlalchemy2_stubs-0.0.2a23-py3-none-any.whl", hash = "sha256:6011d2219365d4e51f3e9d83ffeb5b904964ef1d143dc1298d8a70ce8641014d"}, + {file = "sqlalchemy2-stubs-0.0.2a24.tar.gz", hash = "sha256:e15c45302eafe196ed516f979ef017135fd619d2c62d02de9a5c5f2e59a600c4"}, + {file = "sqlalchemy2_stubs-0.0.2a24-py3-none-any.whl", hash = "sha256:f2399251d3d8f00a88659d711a449c855a0d4e977c7a9134e414f1459b9acc11"}, ] sqlmodel = [ {file = "sqlmodel-0.0.6-py3-none-any.whl", hash = "sha256:c5fd8719e09da348cd32ce2a5b6a44f289d3029fa8f1c9818229b6f34f1201b4"}, From e3f3f85ef5fd620b7734d7a3cbfd65c9128629fd Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 00:43:38 +0200 Subject: [PATCH 117/391] Refactor db table to dataclass --- discord_bot/commands/public_emotes.py | 9 ++-- discord_bot/db.py | 32 ++++++++++++--- discord_bot/main.py | 59 ++++++++++++++++++++++----- 3 files changed, 79 insertions(+), 21 deletions(-) diff --git a/discord_bot/commands/public_emotes.py b/discord_bot/commands/public_emotes.py index 68deea90..29550bcf 100644 --- a/discord_bot/commands/public_emotes.py +++ b/discord_bot/commands/public_emotes.py @@ -9,7 +9,7 @@ from postgrest import APIResponse, AsyncSelectRequestBuilder from simple_parsing import ArgumentParser -from discord_bot.db import supabase +from discord_bot.db import DiscordMessage, supabase # How many emojis to list when counting TOP_EMOTE_LIMIT = 10 @@ -44,7 +44,7 @@ async def public_count_emotes( params: CountEmotesParserOptions = parsed.params query: AsyncSelectRequestBuilder = ( - supabase.table('discord_messages').select( + supabase.table(DiscordMessage.table_name()).select( 'what', ) # Get messages written in that guild @@ -81,9 +81,8 @@ async def public_count_emotes( emote_pattern = r'' emote_counter: CounterType[str] = Counter() - for row in result_emotes.data: # + animated_emotes.data: - text = row['what'] - for match in re.finditer(emote_pattern, text): + for message_row in DiscordMessage.from_select(result_emotes): + for match in re.finditer(emote_pattern, message_row.what): # Validate/load emoji from cache _emote_name, emote_snowflake = match.groups() find_emote: Optional[KnownCustomEmoji] = bot.cache.get_emoji(int(emote_snowflake)) diff --git a/discord_bot/db.py b/discord_bot/db.py index d1419934..0fd8304f 100644 --- a/discord_bot/db.py +++ b/discord_bot/db.py @@ -1,13 +1,17 @@ import asyncio import os +from dataclasses import dataclass from pathlib import Path from typing import Generator +import arrow +from arrow import Arrow from postgrest.base_request_builder import APIResponse from discord_bot.supabase_async_client import Client, create_client # Load url and key from env or from file + url: str = os.getenv('SUPABASEURL') # type: ignore if url is None: SUPABASEURL_PATH = Path(__file__).parent / 'SUPABASEURL' @@ -28,14 +32,32 @@ del key -def flatten_result(result: APIResponse, column_name: str) -> Generator: - # If 'select' only queried one column, flatten result to an iterator - for row in result.data: - yield row[column_name] +@dataclass +class DiscordMessage: + message_id: int = None # type: ignore + guild_id: int = None # type: ignore + channel_id: int = None # type: ignore + author_id: int = None # type: ignore + who: str = None # type: ignore + when: str = None # type: ignore + what: str = None # type: ignore + + @property + def when_arrow(self) -> Arrow: + return arrow.get(self.when) + + @staticmethod + def table_name() -> str: + return 'discord_messages' + + @staticmethod + def from_select(response: APIResponse) -> Generator['DiscordMessage', None, None]: + for row in response.data: + yield DiscordMessage(**row) async def main(): - response: APIResponse = await supabase.table('sc2accounts').select('*').execute() + response: APIResponse = await supabase.table(DiscordMessage.table_name()).select('message_id').execute() for row in response.data: print(row) diff --git a/discord_bot/main.py b/discord_bot/main.py index 10c08c0f..aa01d9c8 100644 --- a/discord_bot/main.py +++ b/discord_bot/main.py @@ -1,24 +1,28 @@ import asyncio import os from pathlib import Path -from typing import AsyncIterable, Awaitable, Callable, Set, Union +from typing import AsyncGenerator, Awaitable, Callable, Generator, Set, Union from hikari import ( Embed, GatewayBot, GatewayGuild, + GuildCategory, GuildMessageCreateEvent, GuildReactionAddEvent, GuildTextChannel, + GuildVoiceChannel, + Message, PartialChannel, StartedEvent, ) from loguru import logger +from postgrest import APIResponse, AsyncSelectRequestBuilder from discord_bot.commands.public_emotes import public_count_emotes from discord_bot.commands.public_mmr import public_mmr from discord_bot.commands.public_remind import Remind -from discord_bot.db import flatten_result, supabase +from discord_bot.db import DiscordMessage, supabase # Load key from env or from file token = os.getenv('DISCORDKEY') @@ -80,25 +84,58 @@ async def loop_function() -> None: await my_reminder.tick() -async def get_all_servers() -> AsyncIterable[GatewayGuild]: - all_connected_servers = bot.cache.get_available_guilds_view() +def get_channels_of_server( server: GatewayGuild +) -> Generator[Union[GuildCategory, + GuildTextChannel, + GuildVoiceChannel, + ], None, None]: + yield from server.get_channels().values() # type: ignore + + +async def fetch_messages_of_channel(channel: GuildTextChannel) -> AsyncGenerator[Message, None]: + query: AsyncSelectRequestBuilder = supabase.table(DiscordMessage.table_name()).select('message_id').eq( + 'channel_id', + channel.id, + ).limit(1) + + # Fetch oldest message id + response: APIResponse = await query.order('when').execute() + # If no messages in db, fetch whole history of channel + before = response.data[0]['message_id'] if response.data else None + async for message in channel.fetch_history(before=before): + yield message + + # Fetch new messages in case the bot was offline for a while + response = await query.order('when', desc=True).execute() + # If no message in db, must mean there are no messages in the channel: skip + if not response.data: + return + async for message in channel.fetch_history(after=response.data[0]['message_id']): + yield message - added_messages = await supabase.table('discord_messages').select('message_id').execute() - message_ids_already_exist: Set[int] = set(flatten_result(added_messages, 'message_id')) +async def get_all_servers() -> AsyncGenerator[GatewayGuild, None]: + all_connected_servers = bot.cache.get_available_guilds_view() + + added_messages: APIResponse = await supabase.table(DiscordMessage.table_name()).select('message_id').execute() + + message_ids_already_exist: Set[int] = {row['message_id'] for row in added_messages.data} + + server: GatewayGuild for server in all_connected_servers.values(): yield server # Add all messages from channel "chat" to DB if server.id == 384968030423351298: - for channel in server.get_channels().values(): - if channel.name == 'chat' and isinstance(channel, GuildTextChannel): - async for message in channel.fetch_history(): + for channel in get_channels_of_server(server): + if isinstance(channel, GuildTextChannel): + async for message in fetch_messages_of_channel(channel): + # async for message in channel.fetch_history(): if message.id in message_ids_already_exist: continue # TODO Use bulk insert via List[dict] await ( - supabase.table('discord_messages').insert( + supabase.table(DiscordMessage.table_name()).insert( { 'message_id': message.id, 'guild_id': server.id, @@ -121,7 +158,7 @@ async def get_all_servers() -> AsyncIterable[GatewayGuild]: @bot.listen() async def on_start(_event: StartedEvent) -> None: - logger.info('Server started') + logger.info('Bot started') await my_reminder.load_reminders() # Call another async function that runs forever asyncio.create_task(loop_function()) From 82602a05a88cb8e57f1d568618233be152cdc615 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 01:21:27 +0200 Subject: [PATCH 118/391] Disable integration tests until websockets package can be upgraded --- burny_common/integration_test_helper.py | 2 +- fastapi_server/poetry.lock | 255 ++++++++++++++++-- fastapi_server/pyproject.toml | 6 +- poetry.lock | 22 +- pyproject.toml | 4 +- .../test_frontend/test_integration.py | 127 ++++----- 6 files changed, 317 insertions(+), 99 deletions(-) diff --git a/burny_common/integration_test_helper.py b/burny_common/integration_test_helper.py index 6a5db72a..5683d94c 100644 --- a/burny_common/integration_test_helper.py +++ b/burny_common/integration_test_helper.py @@ -157,7 +157,7 @@ def start_fastapi_dev_server( pass time.sleep(0.1) - new_processes = get_pid('uvicorn') - currently_running_uvicorn_processes + new_processes: Set[int] = get_pid('uvicorn') - currently_running_uvicorn_processes logger.info(f'New uvicorn processes: {new_processes}') NEWLY_CREATED_PROCESSES |= new_processes diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock index 55787526..a0aad415 100644 --- a/fastapi_server/poetry.lock +++ b/fastapi_server/poetry.lock @@ -115,7 +115,7 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.70.1" +version = "0.78.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "main" optional = false @@ -123,13 +123,13 @@ python-versions = ">=3.6.1" [package.dependencies] pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" -starlette = "0.16.0" +starlette = "0.19.1" [package.extras] -all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] -doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] -test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] +all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer (>=0.4.1,<0.5.0)", "pyyaml (>=5.3.1,<7.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==22.3.0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==4.2.1)", "types-orjson (==3.6.2)", "types-dataclasses (==0.6.5)"] [[package]] name = "h11" @@ -139,6 +139,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "httptools" +version = "0.4.0" +description = "A collection of framework independent HTTP protocol utils." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + [[package]] name = "hypothesis" version = "6.47.3" @@ -335,6 +346,17 @@ pytest = ">=5.4.0" [package.extras] testing = ["coverage", "hypothesis (>=5.7.1)"] +[[package]] +name = "python-dotenv" +version = "0.20.0" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +cli = ["click (>=5.0)"] + [[package]] name = "python-multipart" version = "0.0.5" @@ -354,6 +376,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "requests" version = "2.28.0" @@ -398,17 +428,18 @@ python-versions = "*" [[package]] name = "starlette" -version = "0.16.0" +version = "0.19.1" description = "The little ASGI library that shines." category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -anyio = ">=3.0.0,<4" +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] +full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "tomli" @@ -453,19 +484,58 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "uvicorn" -version = "0.16.0" +version = "0.17.6" description = "The lightning-fast ASGI server." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] asgiref = ">=3.4.0" click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} h11 = ">=0.8" +httptools = {version = ">=0.4.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchgod = {version = ">=0.6", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.0", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "websockets (>=9.1)", "websockets (>=10.0)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] +standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + +[[package]] +name = "uvloop" +version = "0.16.0" +description = "Fast implementation of asyncio event loop on top of libuv" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=3.6.0)", "Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)"] +test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] + +[[package]] +name = "watchgod" +version = "0.8.2" +description = "Simple, modern file watching and code reload in python." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +anyio = ">=3.0.0,<4" + +[[package]] +name = "websockets" +version = "10.3" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" +optional = false +python-versions = ">=3.7" [[package]] name = "win32-setctime" @@ -494,7 +564,7 @@ requests = "*" [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "bbbd2934c22a413160f300a12644a2eb688cd22f2a496ca2508cd5e8655ce9d0" +content-hash = "6537c4a7f926bd0e198cf7b2c259569c66cf122c108f96d7ca4b1c30bfc0e7a9" [metadata.files] anyio = [ @@ -538,13 +608,49 @@ exceptiongroup = [ {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, ] fastapi = [ - {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, - {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, + {file = "fastapi-0.78.0-py3-none-any.whl", hash = "sha256:15fcabd5c78c266fa7ae7d8de9b384bfc2375ee0503463a6febbe3bab69d6f65"}, + {file = "fastapi-0.78.0.tar.gz", hash = "sha256:3233d4a789ba018578658e2af1a4bb5e38bdd122ff722b313666a9b2c6786a83"}, ] h11 = [ {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] +httptools = [ + {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5"}, + {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23"}, + {file = "httptools-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed"}, + {file = "httptools-0.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683"}, + {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c"}, + {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919"}, + {file = "httptools-0.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe"}, + {file = "httptools-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd"}, + {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c"}, + {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e"}, + {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d"}, + {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae"}, + {file = "httptools-0.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777"}, + {file = "httptools-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111"}, + {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1"}, + {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0"}, + {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af"}, + {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4"}, + {file = "httptools-0.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe"}, + {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b"}, + {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a"}, + {file = "httptools-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48"}, + {file = "httptools-0.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad"}, + {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3"}, + {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409"}, + {file = "httptools-0.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de"}, + {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890"}, + {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055"}, + {file = "httptools-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855"}, + {file = "httptools-0.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722"}, + {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424"}, + {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d"}, + {file = "httptools-0.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83"}, + {file = "httptools-0.4.0.tar.gz", hash = "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff"}, +] hypothesis = [ {file = "hypothesis-6.47.3-py3-none-any.whl", hash = "sha256:148198eacaa52aabd5b598e989d6906311a0580af6f99e76e3ace8d60762779a"}, {file = "hypothesis-6.47.3.tar.gz", hash = "sha256:3c6d99cd7540a64c37d88f86a7509c0ca29cda37a82a957340fba11388dfb9ce"}, @@ -637,6 +743,10 @@ pytest-asyncio = [ {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, ] +python-dotenv = [ + {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, + {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, +] python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] @@ -644,6 +754,41 @@ pytz = [ {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] requests = [ {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, @@ -661,8 +806,8 @@ sortedcontainers = [ {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, ] starlette = [ - {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, - {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, + {file = "starlette-0.19.1-py3-none-any.whl", hash = "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf"}, + {file = "starlette-0.19.1.tar.gz", hash = "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7"}, ] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, @@ -682,8 +827,80 @@ urllib3 = [ {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] uvicorn = [ - {file = "uvicorn-0.16.0-py3-none-any.whl", hash = "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2"}, - {file = "uvicorn-0.16.0.tar.gz", hash = "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d"}, + {file = "uvicorn-0.17.6-py3-none-any.whl", hash = "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6"}, + {file = "uvicorn-0.17.6.tar.gz", hash = "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23"}, +] +uvloop = [ + {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"}, + {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c"}, + {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64"}, + {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9"}, + {file = "uvloop-0.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638"}, + {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450"}, + {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805"}, + {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382"}, + {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee"}, + {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464"}, + {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab"}, + {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f"}, + {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897"}, + {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f"}, + {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"}, + {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, +] +watchgod = [ + {file = "watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce"}, + {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, +] +websockets = [ + {file = "websockets-10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978"}, + {file = "websockets-10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b529fdfa881b69fe563dbd98acce84f3e5a67df13de415e143ef053ff006d500"}, + {file = "websockets-10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f351c7d7d92f67c0609329ab2735eee0426a03022771b00102816a72715bb00b"}, + {file = "websockets-10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379e03422178436af4f3abe0aa8f401aa77ae2487843738542a75faf44a31f0c"}, + {file = "websockets-10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e904c0381c014b914136c492c8fa711ca4cced4e9b3d110e5e7d436d0fc289e8"}, + {file = "websockets-10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e7e6f2d6fd48422071cc8a6f8542016f350b79cc782752de531577d35e9bd677"}, + {file = "websockets-10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9c77f0d1436ea4b4dc089ed8335fa141e6a251a92f75f675056dac4ab47a71e"}, + {file = "websockets-10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e6fa05a680e35d0fcc1470cb070b10e6fe247af54768f488ed93542e71339d6f"}, + {file = "websockets-10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2f94fa3ae454a63ea3a19f73b95deeebc9f02ba2d5617ca16f0bbdae375cda47"}, + {file = "websockets-10.3-cp310-cp310-win32.whl", hash = "sha256:6ed1d6f791eabfd9808afea1e068f5e59418e55721db8b7f3bfc39dc831c42ae"}, + {file = "websockets-10.3-cp310-cp310-win_amd64.whl", hash = "sha256:347974105bbd4ea068106ec65e8e8ebd86f28c19e529d115d89bd8cc5cda3079"}, + {file = "websockets-10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fab7c640815812ed5f10fbee7abbf58788d602046b7bb3af9b1ac753a6d5e916"}, + {file = "websockets-10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:994cdb1942a7a4c2e10098d9162948c9e7b235df755de91ca33f6e0481366fdb"}, + {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aad5e300ab32036eb3fdc350ad30877210e2f51bceaca83fb7fef4d2b6c72b79"}, + {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e49ea4c1a9543d2bd8a747ff24411509c29e4bdcde05b5b0895e2120cb1a761d"}, + {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ea6b300a6bdd782e49922d690e11c3669828fe36fc2471408c58b93b5535a98"}, + {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ef5ce841e102278c1c2e98f043db99d6755b1c58bde475516aef3a008ed7f28e"}, + {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d1655a6fc7aecd333b079d00fb3c8132d18988e47f19740c69303bf02e9883c6"}, + {file = "websockets-10.3-cp37-cp37m-win32.whl", hash = "sha256:83e5ca0d5b743cde3d29fda74ccab37bdd0911f25bd4cdf09ff8b51b7b4f2fa1"}, + {file = "websockets-10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:da4377904a3379f0c1b75a965fff23b28315bcd516d27f99a803720dfebd94d4"}, + {file = "websockets-10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a1e15b230c3613e8ea82c9fc6941b2093e8eb939dd794c02754d33980ba81e36"}, + {file = "websockets-10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31564a67c3e4005f27815634343df688b25705cccb22bc1db621c781ddc64c69"}, + {file = "websockets-10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c8d1d14aa0f600b5be363077b621b1b4d1eb3fbf90af83f9281cda668e6ff7fd"}, + {file = "websockets-10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fbd7d77f8aba46d43245e86dd91a8970eac4fb74c473f8e30e9c07581f852b2"}, + {file = "websockets-10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210aad7fdd381c52e58777560860c7e6110b6174488ef1d4b681c08b68bf7f8c"}, + {file = "websockets-10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6075fd24df23133c1b078e08a9b04a3bc40b31a8def4ee0b9f2c8865acce913e"}, + {file = "websockets-10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f6d96fdb0975044fdd7953b35d003b03f9e2bcf85f2d2cf86285ece53e9f991"}, + {file = "websockets-10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7250848ce69559756ad0086a37b82c986cd33c2d344ab87fea596c5ac6d9442"}, + {file = "websockets-10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28dd20b938a57c3124028680dc1600c197294da5db4292c76a0b48efb3ed7f76"}, + {file = "websockets-10.3-cp38-cp38-win32.whl", hash = "sha256:54c000abeaff6d8771a4e2cef40900919908ea7b6b6a30eae72752607c6db559"}, + {file = "websockets-10.3-cp38-cp38-win_amd64.whl", hash = "sha256:7ab36e17af592eec5747c68ef2722a74c1a4a70f3772bc661079baf4ae30e40d"}, + {file = "websockets-10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a141de3d5a92188234afa61653ed0bbd2dde46ad47b15c3042ffb89548e77094"}, + {file = "websockets-10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:97bc9d41e69a7521a358f9b8e44871f6cdeb42af31815c17aed36372d4eec667"}, + {file = "websockets-10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6353ba89cfc657a3f5beabb3b69be226adbb5c6c7a66398e17809b0ce3c4731"}, + {file = "websockets-10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec2b0ab7edc8cd4b0eb428b38ed89079bdc20c6bdb5f889d353011038caac2f9"}, + {file = "websockets-10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:85506b3328a9e083cc0a0fb3ba27e33c8db78341b3eb12eb72e8afd166c36680"}, + {file = "websockets-10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8af75085b4bc0b5c40c4a3c0e113fa95e84c60f4ed6786cbb675aeb1ee128247"}, + {file = "websockets-10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07cdc0a5b2549bcfbadb585ad8471ebdc7bdf91e32e34ae3889001c1c106a6af"}, + {file = "websockets-10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5b936bf552e4f6357f5727579072ff1e1324717902127ffe60c92d29b67b7be3"}, + {file = "websockets-10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e4e08305bfd76ba8edab08dcc6496f40674f44eb9d5e23153efa0a35750337e8"}, + {file = "websockets-10.3-cp39-cp39-win32.whl", hash = "sha256:bb621ec2dbbbe8df78a27dbd9dd7919f9b7d32a73fafcb4d9252fc4637343582"}, + {file = "websockets-10.3-cp39-cp39-win_amd64.whl", hash = "sha256:51695d3b199cd03098ae5b42833006a0f43dc5418d3102972addc593a783bc02"}, + {file = "websockets-10.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:907e8247480f287aa9bbc9391bd6de23c906d48af54c8c421df84655eef66af7"}, + {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1359aba0ff810d5830d5ab8e2c4a02bebf98a60aa0124fb29aa78cfdb8031f"}, + {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d5ea0b5da8d66d868b32c614d2b52d14304444e39e13a59566d4acb8d6e2e4"}, + {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7934e055fd5cd9dee60f11d16c8d79c4567315824bacb1246d0208a47eca9755"}, + {file = "websockets-10.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3eda1cb7e9da1b22588cefff09f0951771d6ee9fa8dbe66f5ae04cc5f26b2b55"}, + {file = "websockets-10.3.tar.gz", hash = "sha256:fc06cc8073c8e87072138ba1e431300e2d408f054b27047d047b549455066ff4"}, ] win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index b053b6a5..bba02ef1 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -9,9 +9,9 @@ python = ">=3.8 <3.11" # Write and read classes to/from json dataclasses-json = "^0.5" # Fastapi server -fastapi = "^0.70" -starlette = "^0.16.0" -uvicorn = "^0.16" +fastapi = "^0.78.0" +uvicorn = {extras = ["standard"], version = "^0.17.6"} +starlette = "0.19.1" # Somehow required colorama = "^0.4.4" # Simple logger diff --git a/poetry.lock b/poetry.lock index 020d67b0..c779b8d8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -438,7 +438,7 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.76.0" +version = "0.78.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "main" optional = false @@ -446,11 +446,11 @@ python-versions = ">=3.6.1" [package.dependencies] pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" -starlette = "0.18.0" +starlette = "0.19.1" [package.extras] all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)"] -dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.18.0)", "pre-commit (>=2.17.0,<3.0.0)"] doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer (>=0.4.1,<0.5.0)", "pyyaml (>=5.3.1,<7.0.0)"] test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==22.3.0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==4.2.1)", "types-orjson (==3.6.2)", "types-dataclasses (==0.6.5)"] @@ -1835,15 +1835,15 @@ sqlalchemy2-stubs = "*" [[package]] name = "starlette" -version = "0.18.0" +version = "0.19.1" description = "The little ASGI library that shines." category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -anyio = ">=3.0.0,<4" -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] @@ -2122,7 +2122,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "a562da874da26e208b359ca6b2fe5e07b8f984d4bf5bf9710b162c140041345d" +content-hash = "162fafe43b2e705f504a719c7d719b50be2fda56db0dd851700f4642b8f43c0a" [metadata.files] aiocontextvars = [ @@ -2458,8 +2458,8 @@ exceptiongroup = [ {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, ] fastapi = [ - {file = "fastapi-0.76.0-py3-none-any.whl", hash = "sha256:1e05c868651e3935bd9b290c61a3661a54e37471d3a0700bc5e4380f9ed935ae"}, - {file = "fastapi-0.76.0.tar.gz", hash = "sha256:a5f99f6e827c7108a8efaf1d7f19d6cf2d735ad984f5e44d33ccec6ee88a7da1"}, + {file = "fastapi-0.78.0-py3-none-any.whl", hash = "sha256:15fcabd5c78c266fa7ae7d8de9b384bfc2375ee0503463a6febbe3bab69d6f65"}, + {file = "fastapi-0.78.0.tar.gz", hash = "sha256:3233d4a789ba018578658e2af1a4bb5e38bdd122ff722b313666a9b2c6786a83"}, ] filelock = [ {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, @@ -3672,8 +3672,8 @@ sqlmodel = [ {file = "sqlmodel-0.0.6.tar.gz", hash = "sha256:3b4f966b9671b24d85529d274e6c4dbc7753b468e35d2d6a40bd75cad1f66813"}, ] starlette = [ - {file = "starlette-0.18.0-py3-none-any.whl", hash = "sha256:377d64737a0e03560cb8eaa57604afee143cea5a4996933242798a7820e64f53"}, - {file = "starlette-0.18.0.tar.gz", hash = "sha256:b45c6e9a617ecb5caf7e6446bd8d767b0084d6217e8e1b08187ca5191e10f097"}, + {file = "starlette-0.19.1-py3-none-any.whl", hash = "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf"}, + {file = "starlette-0.19.1.tar.gz", hash = "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7"}, ] storage3 = [ {file = "storage3-0.3.4-py3-none-any.whl", hash = "sha256:2801e9abead0513fbef0f4736220e3b26678104a955f535d1280094696e2084b"}, diff --git a/pyproject.toml b/pyproject.toml index 911efbb2..c254c41a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,8 +43,8 @@ sqlmodel = "^0.0.6" # Geometry manipulation Shapely = "^1.8" # Fastapi server -fastapi = "^0.76" -uvicorn = "^0.17" +fastapi = "^0.78.0" +uvicorn = "^0.17.6" # End to end tests playwright = "^1" pytest-playwright = "^0.3.0" diff --git a/svelte_frontend/test_frontend/test_integration.py b/svelte_frontend/test_frontend/test_integration.py index 27e647b8..74c535bb 100644 --- a/svelte_frontend/test_frontend/test_integration.py +++ b/svelte_frontend/test_frontend/test_integration.py @@ -1,7 +1,7 @@ from pathlib import Path from typing import Set -from playwright.sync_api import BrowserContext, Page +from playwright.sync_api import Page from burny_common.integration_test_helper import ( find_next_free_port, @@ -107,65 +107,66 @@ def test_add_todo_submit3(self, page: Page): assert test_text in page.content() assert 'Unable to connect to server - running local mode' not in page.content() - def test_chat_single(self, page: Page): - """ Chat with yourself """ - page.goto(self.FRONTEND_ADDRESS) - assert 'Hello world!' in page.content() - page.click('#chat') - page.wait_for_url('/normalchat') - my_username = 'beep_boop' - - assert my_username not in page.content() - page.fill('#username', my_username) - page.click('#connect') - - # Send a message by pressing send button - some_text = 'bla blubb' - page.fill('#chatinput', some_text) - assert 'You' not in page.content() - page.click('#sendmessage') - assert 'You' in page.content() - assert some_text in page.content() - # Send a message by pressing enter - some_other_text = 'some other text' - page.type('#chatinput', f'{some_other_text}\n') - assert some_other_text in page.content() - - def test_chat_two_people(self, context: BrowserContext): - """ Make sure chat between 2 people work """ - # Connect with robot1 - page1 = context.new_page() - page1.goto(self.FRONTEND_ADDRESS) - page1.click('#chat') - page1.wait_for_url('/normalchat') - my_username1 = 'robot1' - page1.fill('#username', my_username1) - page1.click('#connect') - # Send message from robot1 - some_text1 = 'sometext1' - page1.fill('#chatinput', some_text1) - page1.click('#sendmessage') - assert 'You' in page1.content() - assert some_text1 in page1.content() - - # Connect with robot2 - page2 = context.new_page() - page2.goto(self.FRONTEND_ADDRESS) - page2.click('#chat') - page2.wait_for_url('/normalchat') - my_username2 = 'robot2' - page2.fill('#username', my_username2) - page2.click('#connect') - # Make sure robot1's messages are visible from robot2 - assert my_username1 in page2.content() - assert some_text1 in page2.content() - # Send message from robot2 - some_text2 = 'sometext2' - page2.fill('#chatinput', some_text2) - page2.click('#sendmessage') - assert 'You' in page2.content() - assert some_text2 in page2.content() - - # Make sure robot2's messages are visible from robot1 - assert my_username2 in page1.content() - assert some_text2 in page1.content() + # Re-enable when unicorn[standard] with websockets can be installed (blocked by supabase) + # def test_chat_single(self, page: Page): + # """ Chat with yourself """ + # page.goto(self.FRONTEND_ADDRESS) + # assert 'Hello world!' in page.content() + # page.click('#chat') + # page.wait_for_url('/normalchat') + # my_username = 'beep_boop' + # + # assert my_username not in page.content() + # page.fill('#username', my_username) + # page.click('#connect') + # + # # Send a message by pressing send button + # some_text = 'bla blubb' + # page.fill('#chatinput', some_text) + # assert 'You' not in page.content() + # page.click('#sendmessage') + # assert 'You' in page.content() + # assert some_text in page.content() + # # Send a message by pressing enter + # some_other_text = 'some other text' + # page.type('#chatinput', f'{some_other_text}\n') + # assert some_other_text in page.content() + # + # def test_chat_two_people(self, context: BrowserContext): + # """ Make sure chat between 2 people work """ + # # Connect with robot1 + # page1 = context.new_page() + # page1.goto(self.FRONTEND_ADDRESS) + # page1.click('#chat') + # page1.wait_for_url('/normalchat') + # my_username1 = 'robot1' + # page1.fill('#username', my_username1) + # page1.click('#connect') + # # Send message from robot1 + # some_text1 = 'sometext1' + # page1.fill('#chatinput', some_text1) + # page1.click('#sendmessage') + # assert 'You' in page1.content() + # assert some_text1 in page1.content() + # + # # Connect with robot2 + # page2 = context.new_page() + # page2.goto(self.FRONTEND_ADDRESS) + # page2.click('#chat') + # page2.wait_for_url('/normalchat') + # my_username2 = 'robot2' + # page2.fill('#username', my_username2) + # page2.click('#connect') + # # Make sure robot1's messages are visible from robot2 + # assert my_username1 in page2.content() + # assert some_text1 in page2.content() + # # Send message from robot2 + # some_text2 = 'sometext2' + # page2.fill('#chatinput', some_text2) + # page2.click('#sendmessage') + # assert 'You' in page2.content() + # assert some_text2 in page2.content() + # + # # Make sure robot2's messages are visible from robot1 + # assert my_username2 in page1.content() + # assert some_text2 in page1.content() From aa131fe4a10f2cc65c310604b84eb9363e2c7401 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:01:47 +0200 Subject: [PATCH 119/391] Fix integration test --- .github/workflows/python_examples.yml | 16 +- burny_common/integration_test_helper.py | 74 ++-- discord_bot/poetry.lock | 2 +- discord_bot/pyproject.toml | 1 + fastapi_server/poetry.lock | 344 +++++++++++++++--- fastapi_server/pyproject.toml | 7 + poetry.lock | 22 +- pyproject.toml | 8 +- run_tests.xsh | 93 +++-- .../test_frontend/test_integration.py | 127 ++++--- 10 files changed, 469 insertions(+), 225 deletions(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index b907dde3..46796df4 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -77,19 +77,17 @@ jobs: run: | printenv - - name: Install python dependencies + - name: Install Python dependencies + working-directory: ${{ env.SUBDIRECTORY }} run: | poetry install - - name: Test with pytest + - name: Run Python tests + working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run pytest ${{ env.SUBDIRECTORY }} + poetry run python -m pytest - name: Run main.py + working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run python ${{ env.SUBDIRECTORY }}/main.py - - - name: Run radon (cyclomatic complexity report) - # './' denotes the current directory - run: | - poetry run radon cc ./ -a -nb + poetry run python main.py diff --git a/burny_common/integration_test_helper.py b/burny_common/integration_test_helper.py index 5683d94c..3675f93f 100644 --- a/burny_common/integration_test_helper.py +++ b/burny_common/integration_test_helper.py @@ -7,10 +7,8 @@ from typing import Optional, Set import psutil -import pymongo import requests # type: ignore from loguru import logger -from pymongo import MongoClient WEBSITE_IP = 'http://localhost' @@ -162,41 +160,41 @@ def start_fastapi_dev_server( NEWLY_CREATED_PROCESSES |= new_processes -def check_if_mongodb_is_running(mongo_db_port: int = 27017) -> bool: - mongo_db_address = f'mongodb://localhost:{mongo_db_port}' - try: - with Timeout(seconds=2): - _my_client: MongoClient - with pymongo.MongoClient(mongo_db_address) as _my_client: - pass - except TimeoutError: - return False - return True - - -# pylint: disable=R1732 -def start_mongodb(mongo_db_port: int = 27017) -> int: - # Start mongodb via docker - if check_if_mongodb_is_running(mongo_db_port): - logger.info(f'MongoDB is already running on port {mongo_db_port}') - return mongo_db_port - command = [ - # TODO add volume to save db - 'docker', - 'run', - '--rm', - '-d', - '--name', - 'mongodb_test', - '-p', - # TODO use mongo_db_port - '27017-27019:27017-27019', - 'mongo:5.0.0', - ] - logger.info(f"Starting mongoDB with command: {' '.join(command)}") - process = subprocess.Popen(command) - process.wait() - return mongo_db_port +# def check_if_mongodb_is_running(mongo_db_port: int = 27017) -> bool: +# mongo_db_address = f'mongodb://localhost:{mongo_db_port}' +# try: +# with Timeout(seconds=2): +# _my_client: MongoClient +# with pymongo.MongoClient(mongo_db_address) as _my_client: +# pass +# except TimeoutError: +# return False +# return True +# +# +# # pylint: disable=R1732 +# def start_mongodb(mongo_db_port: int = 27017) -> int: +# # Start mongodb via docker +# if check_if_mongodb_is_running(mongo_db_port): +# logger.info(f'MongoDB is already running on port {mongo_db_port}') +# return mongo_db_port +# command = [ +# # TODO add volume to save db +# 'docker', +# 'run', +# '--rm', +# '-d', +# '--name', +# 'mongodb_test', +# '-p', +# # TODO use mongo_db_port +# '27017-27019:27017-27019', +# 'mongo:5.0.0', +# ] +# logger.info(f"Starting mongoDB with command: {' '.join(command)}") +# process = subprocess.Popen(command) +# process.wait() +# return mongo_db_port def check_if_postgres_is_running(port: int = 5432) -> bool: @@ -266,7 +264,7 @@ def kill_processes(processes: Set[int]): if __name__ == '__main__': logger.info(f'Docker running: {check_if_docker_is_running()}') logger.info(f'Postgres running: {check_if_postgres_is_running()}') - logger.info(f'MongoDB running: {check_if_mongodb_is_running()}') + # logger.info(f'MongoDB running: {check_if_mongodb_is_running()}') # start_postgres() # start_mongodb() free_frontend_port = find_next_free_port() diff --git a/discord_bot/poetry.lock b/discord_bot/poetry.lock index 76289583..0d2dbf64 100644 --- a/discord_bot/poetry.lock +++ b/discord_bot/poetry.lock @@ -1001,7 +1001,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "21cfc7e26d4d7aa208cf925da7d389ea8f18d4eb1073f7192405c858b5918dbd" +content-hash = "859c44057553b42733c19a497eb77896296d7f61536852843877c5d9a36c30ec" [metadata.files] aiohttp = [ diff --git a/discord_bot/pyproject.toml b/discord_bot/pyproject.toml index f00dc8db..49750b5f 100644 --- a/discord_bot/pyproject.toml +++ b/discord_bot/pyproject.toml @@ -16,6 +16,7 @@ loguru = "^0.6.0" ptable = "^0.9.2" # Remote SQL DB supabase = "^0.5.7" +postgrest-py = "^0.10.2" # Argparse with dataclass simple-parsing = "^0.0.20" diff --git a/fastapi_server/poetry.lock b/fastapi_server/poetry.lock index a0aad415..042586cc 100644 --- a/fastapi_server/poetry.lock +++ b/fastapi_server/poetry.lock @@ -131,6 +131,17 @@ dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,< doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer (>=0.4.1,<0.5.0)", "pyyaml (>=5.3.1,<7.0.0)"] test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==22.3.0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==4.2.1)", "types-orjson (==3.6.2)", "types-dataclasses (==0.6.5)"] +[[package]] +name = "greenlet" +version = "1.1.2" +description = "Lightweight in-process concurrent programming" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["sphinx"] + [[package]] name = "h11" version = "0.13.0" @@ -265,6 +276,20 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "playwright" +version = "1.22.0" +description = "A high-level API to automate web browsers" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +greenlet = "1.1.2" +pyee = "8.1.0" +typing-extensions = {version = "*", markers = "python_version <= \"3.8\""} +websockets = "10.1" + [[package]] name = "pluggy" version = "1.0.0" @@ -277,6 +302,17 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "psutil" +version = "5.9.1" +description = "Cross-platform lib for process and system monitoring in Python." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] + [[package]] name = "py" version = "1.11.0" @@ -285,6 +321,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "py-cpuinfo" +version = "8.0.0" +description = "Get CPU info with pure Python 2 & 3" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pydantic" version = "1.9.1" @@ -300,6 +344,14 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pyee" +version = "8.1.0" +description = "A port of node.js's EventEmitter to python." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pyparsing" version = "3.0.9" @@ -346,6 +398,49 @@ pytest = ">=5.4.0" [package.extras] testing = ["coverage", "hypothesis (>=5.7.1)"] +[[package]] +name = "pytest-base-url" +version = "2.0.0" +description = "pytest plugin for URL based testing" +category = "dev" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +pytest = ">=3.0.0,<8.0.0" +requests = ">=2.9" + +[[package]] +name = "pytest-benchmark" +version = "3.4.1" +description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +py-cpuinfo = "*" +pytest = ">=3.8" + +[package.extras] +aspect = ["aspectlib"] +elasticsearch = ["elasticsearch"] +histogram = ["pygal", "pygaljs"] + +[[package]] +name = "pytest-playwright" +version = "0.3.0" +description = "A pytest wrapper with fixtures for Playwright to automate web browsers" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +playwright = ">=1.18" +pytest = "*" +pytest-base-url = "*" +python-slugify = "*" + [[package]] name = "python-dotenv" version = "0.20.0" @@ -368,6 +463,20 @@ python-versions = "*" [package.dependencies] six = ">=1.4.0" +[[package]] +name = "python-slugify" +version = "6.1.2" +description = "A Python slugify application that also handles Unicode" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + [[package]] name = "pytz" version = "2022.1" @@ -441,6 +550,14 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "tomli" version = "2.0.1" @@ -531,7 +648,7 @@ anyio = ">=3.0.0,<4" [[package]] name = "websockets" -version = "10.3" +version = "10.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" category = "main" optional = false @@ -564,7 +681,7 @@ requests = "*" [metadata] lock-version = "1.1" python-versions = ">=3.8 <3.11" -content-hash = "6537c4a7f926bd0e198cf7b2c259569c66cf122c108f96d7ca4b1c30bfc0e7a9" +content-hash = "d894f666f885d655aa8f8d3f7c53753fcc03b928ac6f3231bf2852256840441b" [metadata.files] anyio = [ @@ -611,6 +728,63 @@ fastapi = [ {file = "fastapi-0.78.0-py3-none-any.whl", hash = "sha256:15fcabd5c78c266fa7ae7d8de9b384bfc2375ee0503463a6febbe3bab69d6f65"}, {file = "fastapi-0.78.0.tar.gz", hash = "sha256:3233d4a789ba018578658e2af1a4bb5e38bdd122ff722b313666a9b2c6786a83"}, ] +greenlet = [ + {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, + {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, + {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, + {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, + {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, + {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, + {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, + {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, + {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, + {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, + {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, + {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, + {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, + {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, + {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, + {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, + {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, + {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, + {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, + {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, + {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, + {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, + {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, + {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, + {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, + {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, +] h11 = [ {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, @@ -686,14 +860,60 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +playwright = [ + {file = "playwright-1.22.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:9506d582e1a36aa19b06f5b5f8ae154265ec2fc5039217cfe8dfd66edb1a7563"}, + {file = "playwright-1.22.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd2e87b4d2a3d736bbd4a85ed7638c577dfc8098bcabd92d248440d51beac50b"}, + {file = "playwright-1.22.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:a36dfaf9be0228985b7b001887f66dc61e8300970c0602ae9d5b191da510a982"}, + {file = "playwright-1.22.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:78ddf51d0c08d94edb6d2ddf7b262f0d87a1c0ab5e121bfefa1945214c308f95"}, + {file = "playwright-1.22.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217b2f623527ded15d602ccca5138395a1677c67399c4494844d5341420d34e0"}, + {file = "playwright-1.22.0-py3-none-win32.whl", hash = "sha256:a4977211414532a525a057f8d461a7277fdfefa20eb577b2e0247523815ba521"}, + {file = "playwright-1.22.0-py3-none-win_amd64.whl", hash = "sha256:bc7827fcc037a9a6f571328c524d50bfd46db4ebdc415ab8b8efafae30c1d597"}, +] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +psutil = [ + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, +] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +py-cpuinfo = [ + {file = "py-cpuinfo-8.0.0.tar.gz", hash = "sha256:5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5"}, +] pydantic = [ {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, @@ -731,6 +951,10 @@ pydantic = [ {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, ] +pyee = [ + {file = "pyee-8.1.0-py2.py3-none-any.whl", hash = "sha256:383973b63ad7ed5e3c0311f8b179c52981f9e7b3eaea0e9a830d13ec34dde65f"}, + {file = "pyee-8.1.0.tar.gz", hash = "sha256:92dacc5bd2bdb8f95aa8dd2585d47ca1c4840e2adb95ccf90034d64f725bfd31"}, +] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, @@ -743,6 +967,18 @@ pytest-asyncio = [ {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, ] +pytest-base-url = [ + {file = "pytest-base-url-2.0.0.tar.gz", hash = "sha256:e1e88a4fd221941572ccdcf3bf6c051392d2f8b6cef3e0bc7da95abec4b5346e"}, + {file = "pytest_base_url-2.0.0-py3-none-any.whl", hash = "sha256:ed36fd632c32af9f1c08f2c2835dcf42ca8fcd097d6ed44a09f253d365ad8297"}, +] +pytest-benchmark = [ + {file = "pytest-benchmark-3.4.1.tar.gz", hash = "sha256:40e263f912de5a81d891619032983557d62a3d85843f9a9f30b98baea0cd7b47"}, + {file = "pytest_benchmark-3.4.1-py2.py3-none-any.whl", hash = "sha256:36d2b08c4882f6f997fd3126a3d6dfd70f3249cde178ed8bbc0b73db7c20f809"}, +] +pytest-playwright = [ + {file = "pytest-playwright-0.3.0.tar.gz", hash = "sha256:62b843b73d259431380393b335bee65cc7a420c9095c83f78274b6b508cb2f33"}, + {file = "pytest_playwright-0.3.0-py3-none-any.whl", hash = "sha256:2f41058f4a769a2c9631baacec65e9ebb3255e34519f0aab7f46e4c7fe66d127"}, +] python-dotenv = [ {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, @@ -750,6 +986,10 @@ python-dotenv = [ python-multipart = [ {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, ] +python-slugify = [ + {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"}, + {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"}, +] pytz = [ {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, @@ -809,6 +1049,10 @@ starlette = [ {file = "starlette-0.19.1-py3-none-any.whl", hash = "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf"}, {file = "starlette-0.19.1.tar.gz", hash = "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7"}, ] +text-unidecode = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -853,54 +1097,54 @@ watchgod = [ {file = "watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450"}, ] websockets = [ - {file = "websockets-10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978"}, - {file = "websockets-10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b529fdfa881b69fe563dbd98acce84f3e5a67df13de415e143ef053ff006d500"}, - {file = "websockets-10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f351c7d7d92f67c0609329ab2735eee0426a03022771b00102816a72715bb00b"}, - {file = "websockets-10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379e03422178436af4f3abe0aa8f401aa77ae2487843738542a75faf44a31f0c"}, - {file = "websockets-10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e904c0381c014b914136c492c8fa711ca4cced4e9b3d110e5e7d436d0fc289e8"}, - {file = "websockets-10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e7e6f2d6fd48422071cc8a6f8542016f350b79cc782752de531577d35e9bd677"}, - {file = "websockets-10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9c77f0d1436ea4b4dc089ed8335fa141e6a251a92f75f675056dac4ab47a71e"}, - {file = "websockets-10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e6fa05a680e35d0fcc1470cb070b10e6fe247af54768f488ed93542e71339d6f"}, - {file = "websockets-10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2f94fa3ae454a63ea3a19f73b95deeebc9f02ba2d5617ca16f0bbdae375cda47"}, - {file = "websockets-10.3-cp310-cp310-win32.whl", hash = "sha256:6ed1d6f791eabfd9808afea1e068f5e59418e55721db8b7f3bfc39dc831c42ae"}, - {file = "websockets-10.3-cp310-cp310-win_amd64.whl", hash = "sha256:347974105bbd4ea068106ec65e8e8ebd86f28c19e529d115d89bd8cc5cda3079"}, - {file = "websockets-10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fab7c640815812ed5f10fbee7abbf58788d602046b7bb3af9b1ac753a6d5e916"}, - {file = "websockets-10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:994cdb1942a7a4c2e10098d9162948c9e7b235df755de91ca33f6e0481366fdb"}, - {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aad5e300ab32036eb3fdc350ad30877210e2f51bceaca83fb7fef4d2b6c72b79"}, - {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e49ea4c1a9543d2bd8a747ff24411509c29e4bdcde05b5b0895e2120cb1a761d"}, - {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ea6b300a6bdd782e49922d690e11c3669828fe36fc2471408c58b93b5535a98"}, - {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ef5ce841e102278c1c2e98f043db99d6755b1c58bde475516aef3a008ed7f28e"}, - {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d1655a6fc7aecd333b079d00fb3c8132d18988e47f19740c69303bf02e9883c6"}, - {file = "websockets-10.3-cp37-cp37m-win32.whl", hash = "sha256:83e5ca0d5b743cde3d29fda74ccab37bdd0911f25bd4cdf09ff8b51b7b4f2fa1"}, - {file = "websockets-10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:da4377904a3379f0c1b75a965fff23b28315bcd516d27f99a803720dfebd94d4"}, - {file = "websockets-10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a1e15b230c3613e8ea82c9fc6941b2093e8eb939dd794c02754d33980ba81e36"}, - {file = "websockets-10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31564a67c3e4005f27815634343df688b25705cccb22bc1db621c781ddc64c69"}, - {file = "websockets-10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c8d1d14aa0f600b5be363077b621b1b4d1eb3fbf90af83f9281cda668e6ff7fd"}, - {file = "websockets-10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fbd7d77f8aba46d43245e86dd91a8970eac4fb74c473f8e30e9c07581f852b2"}, - {file = "websockets-10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210aad7fdd381c52e58777560860c7e6110b6174488ef1d4b681c08b68bf7f8c"}, - {file = "websockets-10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6075fd24df23133c1b078e08a9b04a3bc40b31a8def4ee0b9f2c8865acce913e"}, - {file = "websockets-10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f6d96fdb0975044fdd7953b35d003b03f9e2bcf85f2d2cf86285ece53e9f991"}, - {file = "websockets-10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7250848ce69559756ad0086a37b82c986cd33c2d344ab87fea596c5ac6d9442"}, - {file = "websockets-10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28dd20b938a57c3124028680dc1600c197294da5db4292c76a0b48efb3ed7f76"}, - {file = "websockets-10.3-cp38-cp38-win32.whl", hash = "sha256:54c000abeaff6d8771a4e2cef40900919908ea7b6b6a30eae72752607c6db559"}, - {file = "websockets-10.3-cp38-cp38-win_amd64.whl", hash = "sha256:7ab36e17af592eec5747c68ef2722a74c1a4a70f3772bc661079baf4ae30e40d"}, - {file = "websockets-10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a141de3d5a92188234afa61653ed0bbd2dde46ad47b15c3042ffb89548e77094"}, - {file = "websockets-10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:97bc9d41e69a7521a358f9b8e44871f6cdeb42af31815c17aed36372d4eec667"}, - {file = "websockets-10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6353ba89cfc657a3f5beabb3b69be226adbb5c6c7a66398e17809b0ce3c4731"}, - {file = "websockets-10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec2b0ab7edc8cd4b0eb428b38ed89079bdc20c6bdb5f889d353011038caac2f9"}, - {file = "websockets-10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:85506b3328a9e083cc0a0fb3ba27e33c8db78341b3eb12eb72e8afd166c36680"}, - {file = "websockets-10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8af75085b4bc0b5c40c4a3c0e113fa95e84c60f4ed6786cbb675aeb1ee128247"}, - {file = "websockets-10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07cdc0a5b2549bcfbadb585ad8471ebdc7bdf91e32e34ae3889001c1c106a6af"}, - {file = "websockets-10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5b936bf552e4f6357f5727579072ff1e1324717902127ffe60c92d29b67b7be3"}, - {file = "websockets-10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e4e08305bfd76ba8edab08dcc6496f40674f44eb9d5e23153efa0a35750337e8"}, - {file = "websockets-10.3-cp39-cp39-win32.whl", hash = "sha256:bb621ec2dbbbe8df78a27dbd9dd7919f9b7d32a73fafcb4d9252fc4637343582"}, - {file = "websockets-10.3-cp39-cp39-win_amd64.whl", hash = "sha256:51695d3b199cd03098ae5b42833006a0f43dc5418d3102972addc593a783bc02"}, - {file = "websockets-10.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:907e8247480f287aa9bbc9391bd6de23c906d48af54c8c421df84655eef66af7"}, - {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1359aba0ff810d5830d5ab8e2c4a02bebf98a60aa0124fb29aa78cfdb8031f"}, - {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d5ea0b5da8d66d868b32c614d2b52d14304444e39e13a59566d4acb8d6e2e4"}, - {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7934e055fd5cd9dee60f11d16c8d79c4567315824bacb1246d0208a47eca9755"}, - {file = "websockets-10.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3eda1cb7e9da1b22588cefff09f0951771d6ee9fa8dbe66f5ae04cc5f26b2b55"}, - {file = "websockets-10.3.tar.gz", hash = "sha256:fc06cc8073c8e87072138ba1e431300e2d408f054b27047d047b549455066ff4"}, + {file = "websockets-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc"}, + {file = "websockets-10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60"}, + {file = "websockets-10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3477146d1f87ead8df0f27e8960249f5248dceb7c2741e8bbec9aa5338d0c053"}, + {file = "websockets-10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb01ea7b5f52e7125bdc3c5807aeaa2d08a0553979cf2d96a8b7803ea33e15e7"}, + {file = "websockets-10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9fd62c6dc83d5d35fb6a84ff82ec69df8f4657fff05f9cd6c7d9bec0dd57f0f6"}, + {file = "websockets-10.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3bbf080f3892ba1dc8838786ec02899516a9d227abe14a80ef6fd17d4fb57127"}, + {file = "websockets-10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5560558b0dace8312c46aa8915da977db02738ac8ecffbc61acfbfe103e10155"}, + {file = "websockets-10.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:667c41351a6d8a34b53857ceb8343a45c85d438ee4fd835c279591db8aeb85be"}, + {file = "websockets-10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:468f0031fdbf4d643f89403a66383247eb82803430b14fa27ce2d44d2662ca37"}, + {file = "websockets-10.1-cp310-cp310-win32.whl", hash = "sha256:d0d81b46a5c87d443e40ce2272436da8e6092aa91f5fbeb60d1be9f11eff5b4c"}, + {file = "websockets-10.1-cp310-cp310-win_amd64.whl", hash = "sha256:b68b6caecb9a0c6db537aa79750d1b592a841e4f1a380c6196091e65b2ad35f9"}, + {file = "websockets-10.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a249139abc62ef333e9e85064c27fefb113b16ffc5686cefc315bdaef3eefbc8"}, + {file = "websockets-10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8877861e3dee38c8d302eee0d5dbefa6663de3b46dc6a888f70cd7e82562d1f7"}, + {file = "websockets-10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e3872ae57acd4306ecf937d36177854e218e999af410a05c17168cd99676c512"}, + {file = "websockets-10.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b66e6d514f12c28d7a2d80bb2a48ef223342e99c449782d9831b0d29a9e88a17"}, + {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9f304a22ece735a3da8a51309bc2c010e23961a8f675fae46fdf62541ed62123"}, + {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:189ed478395967d6a98bb293abf04e8815349e17456a0a15511f1088b6cb26e4"}, + {file = "websockets-10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:08a42856158307e231b199671c4fce52df5786dd3d703f36b5d8ac76b206c485"}, + {file = "websockets-10.1-cp37-cp37m-win32.whl", hash = "sha256:3ef6f73854cded34e78390dbdf40dfdcf0b89b55c0e282468ef92646fce8d13a"}, + {file = "websockets-10.1-cp37-cp37m-win_amd64.whl", hash = "sha256:89e985d40d407545d5f5e2e58e1fdf19a22bd2d8cd54d20a882e29f97e930a0a"}, + {file = "websockets-10.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:002071169d2e44ce8eb9e5ebac9fbce142ba4b5146eef1cfb16b177a27662657"}, + {file = "websockets-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cfae282c2aa7f0c4be45df65c248481f3509f8c40ca8b15ed96c35668ae0ff69"}, + {file = "websockets-10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97b4b68a2ddaf5c4707ae79c110bfd874c5be3c6ac49261160fb243fa45d8bbb"}, + {file = "websockets-10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c9407719f42cb77049975410490c58a705da6af541adb64716573e550e5c9db"}, + {file = "websockets-10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d858fb31e5ac992a2cdf17e874c95f8a5b1e917e1fb6b45ad85da30734b223f"}, + {file = "websockets-10.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7bdd3d26315db0a9cf8a0af30ca95e0aa342eda9c1377b722e71ccd86bc5d1dd"}, + {file = "websockets-10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e259be0863770cb91b1a6ccf6907f1ac2f07eff0b7f01c249ed751865a70cb0d"}, + {file = "websockets-10.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6b014875fae19577a392372075e937ebfebf53fd57f613df07b35ab210f31534"}, + {file = "websockets-10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:98de71f86bdb29430fd7ba9997f47a6b10866800e3ea577598a786a785701bb0"}, + {file = "websockets-10.1-cp38-cp38-win32.whl", hash = "sha256:3a02ab91d84d9056a9ee833c254895421a6333d7ae7fff94b5c68e4fa8095519"}, + {file = "websockets-10.1-cp38-cp38-win_amd64.whl", hash = "sha256:7d6673b2753f9c5377868a53445d0c321ef41ff3c8e3b6d57868e72054bfce5f"}, + {file = "websockets-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ddab2dc69ee5ae27c74dbfe9d7bb6fee260826c136dca257faa1a41d1db61a89"}, + {file = "websockets-10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14e9cf68a08d1a5d42109549201aefba473b1d925d233ae19035c876dd845da9"}, + {file = "websockets-10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e4819c6fb4f336fd5388372cb556b1f3a165f3f68e66913d1a2fc1de55dc6f58"}, + {file = "websockets-10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05e7f098c76b0a4743716590bb8f9706de19f1ef5148d61d0cf76495ec3edb9c"}, + {file = "websockets-10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5bb6256de5a4fb1d42b3747b4e2268706c92965d75d0425be97186615bf2f24f"}, + {file = "websockets-10.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:888a5fa2a677e0c2b944f9826c756475980f1b276b6302e606f5c4ff5635be9e"}, + {file = "websockets-10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6fdec1a0b3e5630c58e3d8704d2011c678929fce90b40908c97dfc47de8dca72"}, + {file = "websockets-10.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:531d8eb013a9bc6b3ad101588182aa9b6dd994b190c56df07f0d84a02b85d530"}, + {file = "websockets-10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0d93b7cadc761347d98da12ec1930b5c71b2096f1ceed213973e3cda23fead9c"}, + {file = "websockets-10.1-cp39-cp39-win32.whl", hash = "sha256:d9b245db5a7e64c95816e27d72830e51411c4609c05673d1ae81eb5d23b0be54"}, + {file = "websockets-10.1-cp39-cp39-win_amd64.whl", hash = "sha256:882c0b8bdff3bf1bd7f024ce17c6b8006042ec4cceba95cf15df57e57efa471c"}, + {file = "websockets-10.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:10edd9d7d3581cfb9ff544ac09fc98cab7ee8f26778a5a8b2d5fd4b0684c5ba5"}, + {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa83174390c0ff4fc1304fbe24393843ac7a08fdd59295759c4b439e06b1536"}, + {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:483edee5abed738a0b6a908025be47f33634c2ad8e737edd03ffa895bd600909"}, + {file = "websockets-10.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:816ae7dac2c6522cfa620947ead0ca95ac654916eebf515c94d7c28de5601a6e"}, + {file = "websockets-10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:1dafe98698ece09b8ccba81b910643ff37198e43521d977be76caf37709cf62b"}, + {file = "websockets-10.1.tar.gz", hash = "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d"}, ] win32-setctime = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, diff --git a/fastapi_server/pyproject.toml b/fastapi_server/pyproject.toml index bba02ef1..f897f9c3 100644 --- a/fastapi_server/pyproject.toml +++ b/fastapi_server/pyproject.toml @@ -25,7 +25,14 @@ python-multipart = "^0.0.5" # Test library pytest = "^7.0.1" pytest-asyncio = "^0.16" +pytest-benchmark = "^3.4.1" +# Property based testing hypothesis = "^6.39.3" +# Info about the system +psutil = "^5.9.1" +# End to end tests +playwright = "^1.22.0" +pytest-playwright = "^0.3.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/poetry.lock b/poetry.lock index c779b8d8..105556e1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -718,7 +718,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -1117,7 +1117,7 @@ test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytes name = "playwright" version = "1.18.1" description = "A high-level API to automate web browsers" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -1131,7 +1131,7 @@ websockets = ">=8.1" name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -1191,7 +1191,7 @@ python-versions = "*" name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -1230,7 +1230,7 @@ email = ["email-validator (>=1.0.3)"] name = "pyee" version = "9.0.4" description = "A port of node.js's EventEmitter to python." -category = "main" +category = "dev" optional = false python-versions = "*" @@ -1324,7 +1324,7 @@ diagrams = ["railroad-diagrams", "jinja2"] name = "pytest" version = "7.1.2" description = "pytest: simple powerful testing with Python" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -1359,7 +1359,7 @@ testing = ["coverage (==6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy name = "pytest-base-url" version = "2.0.0" description = "pytest plugin for URL based testing" -category = "main" +category = "dev" optional = false python-versions = ">=3.7,<4.0" @@ -1403,7 +1403,7 @@ testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtuale name = "pytest-playwright" version = "0.3.0" description = "A pytest wrapper with fixtures for Playwright to automate web browsers" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -1492,7 +1492,7 @@ test = ["coverage (>=5,<6)", "pytest (>=5,<6)", "pytest-xdist (>=1,<2)", "pytest name = "python-slugify" version = "6.1.2" description = "A Python slugify application that also handles Unicode" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" @@ -1880,7 +1880,7 @@ storage3 = ">=0.3.1,<0.4.0" name = "text-unidecode" version = "1.3" description = "The most basic Text::Unidecode port" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -2122,7 +2122,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8, <3.11" -content-hash = "162fafe43b2e705f504a719c7d719b50be2fda56db0dd851700f4642b8f43c0a" +content-hash = "f9a7755d9541629cf24a003815200445510867852468b0a05f602ceb78c3d2f5" [metadata.files] aiocontextvars = [ diff --git a/pyproject.toml b/pyproject.toml index c254c41a..978dc81c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,9 +45,6 @@ Shapely = "^1.8" # Fastapi server fastapi = "^0.78.0" uvicorn = "^0.17.6" -# End to end tests -playwright = "^1" -pytest-playwright = "^0.3.0" # Info about the system psutil = "^5.8" # Execute command on server via SSH, or push files via SFTP @@ -99,9 +96,12 @@ pytest = "^7.1" pytest-asyncio = "^0.18" pytest-cov = "^3.0" pytest-benchmark = "^3.4" +# End to end tests +playwright = "^1" +pytest-playwright = "^0.3.0" # Type checking mypy = "^0.950" -# Statistical testing +# Property based testing hypothesis = "^6.34" # Cyclomatic complexity checker radon = "^5.0" diff --git a/run_tests.xsh b/run_tests.xsh index fa2a9be3..13f43bf0 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -17,6 +17,13 @@ python_files: List[str] = $(git ls-files '*.py').splitlines() files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() ANY_COMMAND_HAS_ERROR = False +def project_has_changed_files(project_name: str, changed_only=True, file_ending: str="") -> List[str]: + iterable_files = changed_files if changed_only else files_in_project(project_name) + return [ + file_name for file_name in iterable_files + if file_name.endswith(file_ending) + ] + def remove_last_message(message: str) -> None: print(" " * len(message), end="\r") @@ -33,7 +40,7 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis else: ret: CommandPipeline = !(@(command) 1>/dev/null 2>/dev/null) while $(jobs): # Without this, time.perf_counter() doesnt seem to work properly - time.sleep(0.1) + time.sleep(0.01) time_required: float = time.perf_counter() - start_time if ignore_exit_status or ret.returncode == 0: remove_last_message(message) @@ -67,67 +74,62 @@ def run( run_command(command, verbose=verbose, display_name="Run mypy") # burny_common - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "burny_common" in file_name and file_name.endswith(".py")] - else: - files_related_to_project = [file_name for file_name in python_files if "burny_common" in file_name and file_name.endswith(".py")] + files_related_to_project = project_has_changed_files("burny_common", changed_only=run_only_changed_files) if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on burny_common") - run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on burny_common") + files_related_to_project_py = project_has_changed_files("burny_common", changed_only=run_only_changed_files, file_ending=".py") + run_command("poetry run yapf --in-place".split() + files_related_to_project_py, verbose=verbose, display_name="Run yapf on burny_common") + run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on burny_common") # discord_bot - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "discord_bot" in file_name and file_name.endswith(".py")] - else: - files_related_to_project = [file_name for file_name in python_files if "discord_bot" in file_name and file_name.endswith(".py")] + files_related_to_project = project_has_changed_files("python_examples", changed_only=run_only_changed_files) if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on discord_bot") - run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on discord_bot") + files_related_to_project_py = project_has_changed_files("python_examples", changed_only=run_only_changed_files, file_ending=".py") + run_command("poetry run yapf --in-place".split() + files_related_to_project_py, verbose=verbose, display_name="Run yapf on discord_bot") + run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on discord_bot") if run_python_test: - run_command("poetry run python -m pytest discord_bot".split(), verbose=verbose, display_name="Run pytest on discord_bot") cd discord_bot - run_command("docker build --tag precommit_image_discord_bot .".split(), verbose=verbose, display_name="Build docker image in discord_bot") + poetry install 1>/dev/null 2>/dev/null + run_command("poetry run python -m pytest".split(), verbose=verbose) + run_command("docker build --tag precommit_image_discord_bot .".split(), verbose=verbose) cd .. # fastapi_server - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "fastapi_server" in file_name and file_name.endswith(".py")] - else: - files_related_to_project = [file_name for file_name in python_files if "fastapi_server" in file_name and file_name.endswith(".py")] + files_related_to_project = project_has_changed_files("fastapi_server", changed_only=run_only_changed_files) if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on fastapi_server") - run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on fastapi_server") + files_related_to_project_py = project_has_changed_files("fastapi_server", changed_only=run_only_changed_files, file_ending=".py") + run_command("poetry run yapf --in-place".split() + files_related_to_project_py, verbose=verbose, display_name="Run yapf on fastapi_server") + run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on fastapi_server") if run_python_test: - run_command("poetry run python -m pytest fastapi_server".split(), verbose=verbose, display_name="Run pytest on fastapi_server") cd fastapi_server - run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose, display_name="Build docker image in fastapi_server") + poetry install 1>/dev/null 2>/dev/null + run_command("poetry run python -m pytest".split(), verbose=verbose) + run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose) # Check if the server can start at all docker build --tag burnysc2/fastapi_server:latest . 1>/dev/null 2>/dev/null - returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, display_name="Run fastapi_server for 5 seconds") + # Run fastapi server for 5 seconds, expect exitcode 124 if timeout was reached and didn't crash before + returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True) if returncode == 124: ANY_COMMAND_HAS_ERROR = True cd .. # python_examples - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "python_examples" in file_name and file_name.endswith(".py")] - else: - files_related_to_project = [file_name for file_name in python_files if "python_examples" in file_name and file_name.endswith(".py")] + files_related_to_project = project_has_changed_files("python_examples", changed_only=run_only_changed_files) if files_related_to_project: if run_python_lint: - run_command("poetry run yapf --in-place".split() + files_related_to_project, verbose=verbose, display_name="Run yapf on python_examples") - run_command("poetry run pylint".split() + files_related_to_project, verbose=verbose, display_name="Run pylint on python_examples") + files_related_to_project_py = project_has_changed_files("python_examples", changed_only=run_only_changed_files, file_ending=".py") + run_command("poetry run yapf --in-place".split() + files_related_to_project_py, verbose=verbose, display_name="Run yapf on python_examples") + run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on python_examples") if run_python_test: - run_command("poetry run python -m pytest python_examples".split(), verbose=verbose, display_name="Run pytest on python_examples") + cd python_examples + poetry install 1>/dev/null 2>/dev/null + run_command("poetry run python -m pytest".split(), verbose=verbose) + cd .. # bored_gems - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "bored_gems" in file_name] - else: - files_related_to_project = files_in_project("bored_gems") + files_related_to_project = project_has_changed_files("bored_gems", changed_only=run_only_changed_files) if files_related_to_project: cd bored_gems npm install 1>/dev/null 2>/dev/null @@ -142,10 +144,7 @@ def run( cd .. # replay_comparer - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "replay_comparer" in file_name] - else: - files_related_to_project = files_in_project("replay_comparer") + files_related_to_project = project_has_changed_files("replay_comparer", changed_only=run_only_changed_files) if files_related_to_project: cd replay_comparer npm install 1>/dev/null 2>/dev/null @@ -158,10 +157,7 @@ def run( cd .. # supabase_stream_scripts - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "supabase_stream_scripts" in file_name] - else: - files_related_to_project = files_in_project("supabase_stream_scripts") + files_related_to_project = project_has_changed_files("supabase_stream_scripts", changed_only=run_only_changed_files) if files_related_to_project: cd supabase_stream_scripts npm install 1>/dev/null 2>/dev/null @@ -174,10 +170,7 @@ def run( cd .. # svelte_frontend - if run_only_changed_files: - files_related_to_project = [file_name for file_name in changed_files if "svelte_frontend" in file_name] - else: - files_related_to_project = files_in_project("svelte_frontend") + files_related_to_project = project_has_changed_files("svelte_frontend", changed_only=run_only_changed_files) if files_related_to_project: cd svelte_frontend npm install 1>/dev/null 2>/dev/null @@ -191,7 +184,11 @@ def run( run_command("npm run test".split(), verbose=verbose) cd .. if run_npm_test: - run_command("poetry run python -m pytest svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split(), verbose=verbose) + cd fastapi_server + poetry install 1>/dev/null 2>/dev/null + run_command("poetry run python -m pytest ../svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split(), verbose=verbose) + cd .. + if __name__ == '__main__': parser = xcli.make_parser("test commands") diff --git a/svelte_frontend/test_frontend/test_integration.py b/svelte_frontend/test_frontend/test_integration.py index 74c535bb..27e647b8 100644 --- a/svelte_frontend/test_frontend/test_integration.py +++ b/svelte_frontend/test_frontend/test_integration.py @@ -1,7 +1,7 @@ from pathlib import Path from typing import Set -from playwright.sync_api import Page +from playwright.sync_api import BrowserContext, Page from burny_common.integration_test_helper import ( find_next_free_port, @@ -107,66 +107,65 @@ def test_add_todo_submit3(self, page: Page): assert test_text in page.content() assert 'Unable to connect to server - running local mode' not in page.content() - # Re-enable when unicorn[standard] with websockets can be installed (blocked by supabase) - # def test_chat_single(self, page: Page): - # """ Chat with yourself """ - # page.goto(self.FRONTEND_ADDRESS) - # assert 'Hello world!' in page.content() - # page.click('#chat') - # page.wait_for_url('/normalchat') - # my_username = 'beep_boop' - # - # assert my_username not in page.content() - # page.fill('#username', my_username) - # page.click('#connect') - # - # # Send a message by pressing send button - # some_text = 'bla blubb' - # page.fill('#chatinput', some_text) - # assert 'You' not in page.content() - # page.click('#sendmessage') - # assert 'You' in page.content() - # assert some_text in page.content() - # # Send a message by pressing enter - # some_other_text = 'some other text' - # page.type('#chatinput', f'{some_other_text}\n') - # assert some_other_text in page.content() - # - # def test_chat_two_people(self, context: BrowserContext): - # """ Make sure chat between 2 people work """ - # # Connect with robot1 - # page1 = context.new_page() - # page1.goto(self.FRONTEND_ADDRESS) - # page1.click('#chat') - # page1.wait_for_url('/normalchat') - # my_username1 = 'robot1' - # page1.fill('#username', my_username1) - # page1.click('#connect') - # # Send message from robot1 - # some_text1 = 'sometext1' - # page1.fill('#chatinput', some_text1) - # page1.click('#sendmessage') - # assert 'You' in page1.content() - # assert some_text1 in page1.content() - # - # # Connect with robot2 - # page2 = context.new_page() - # page2.goto(self.FRONTEND_ADDRESS) - # page2.click('#chat') - # page2.wait_for_url('/normalchat') - # my_username2 = 'robot2' - # page2.fill('#username', my_username2) - # page2.click('#connect') - # # Make sure robot1's messages are visible from robot2 - # assert my_username1 in page2.content() - # assert some_text1 in page2.content() - # # Send message from robot2 - # some_text2 = 'sometext2' - # page2.fill('#chatinput', some_text2) - # page2.click('#sendmessage') - # assert 'You' in page2.content() - # assert some_text2 in page2.content() - # - # # Make sure robot2's messages are visible from robot1 - # assert my_username2 in page1.content() - # assert some_text2 in page1.content() + def test_chat_single(self, page: Page): + """ Chat with yourself """ + page.goto(self.FRONTEND_ADDRESS) + assert 'Hello world!' in page.content() + page.click('#chat') + page.wait_for_url('/normalchat') + my_username = 'beep_boop' + + assert my_username not in page.content() + page.fill('#username', my_username) + page.click('#connect') + + # Send a message by pressing send button + some_text = 'bla blubb' + page.fill('#chatinput', some_text) + assert 'You' not in page.content() + page.click('#sendmessage') + assert 'You' in page.content() + assert some_text in page.content() + # Send a message by pressing enter + some_other_text = 'some other text' + page.type('#chatinput', f'{some_other_text}\n') + assert some_other_text in page.content() + + def test_chat_two_people(self, context: BrowserContext): + """ Make sure chat between 2 people work """ + # Connect with robot1 + page1 = context.new_page() + page1.goto(self.FRONTEND_ADDRESS) + page1.click('#chat') + page1.wait_for_url('/normalchat') + my_username1 = 'robot1' + page1.fill('#username', my_username1) + page1.click('#connect') + # Send message from robot1 + some_text1 = 'sometext1' + page1.fill('#chatinput', some_text1) + page1.click('#sendmessage') + assert 'You' in page1.content() + assert some_text1 in page1.content() + + # Connect with robot2 + page2 = context.new_page() + page2.goto(self.FRONTEND_ADDRESS) + page2.click('#chat') + page2.wait_for_url('/normalchat') + my_username2 = 'robot2' + page2.fill('#username', my_username2) + page2.click('#connect') + # Make sure robot1's messages are visible from robot2 + assert my_username1 in page2.content() + assert some_text1 in page2.content() + # Send message from robot2 + some_text2 = 'sometext2' + page2.fill('#chatinput', some_text2) + page2.click('#sendmessage') + assert 'You' in page2.content() + assert some_text2 in page2.content() + + # Make sure robot2's messages are visible from robot1 + assert my_username2 in page1.content() + assert some_text2 in page1.content() From 28c72f593c1dfb59eeb8fdd59caef44b0eb79836 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:04:55 +0200 Subject: [PATCH 120/391] Fix svelte_frontend integration test --- .github/workflows/test_svelte_frontend.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index e6ddbc8c..fa595a19 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -16,6 +16,7 @@ on: env: SUBDIRECTORY: svelte_frontend + BACKEND_SUBDIRECTORY: fastapi_server jobs: test_svelte_frontend: @@ -154,6 +155,7 @@ jobs: key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | poetry install @@ -179,5 +181,6 @@ jobs: poetry run playwright install - name: Run integration tests + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | - poetry run pytest ${{ env.SUBDIRECTORY }}/test_frontend/test_integration.py + poetry run pytest ../${{ env.SUBDIRECTORY }}/test_frontend/test_integration.py From be3c2c75cefb652d3d22fbc7b1104145b302b2e3 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:06:06 +0200 Subject: [PATCH 121/391] Enable multiple python versions to check python code --- .github/workflows/check_python_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 56eba2a2..d0e13c39 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -21,7 +21,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.10'] + python-version: ['3.8', '3.9', '3.10'] runs-on: ${{ matrix.os }} steps: From 77721abf603a09c2b2dec8378854f5b87958958b Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:08:52 +0200 Subject: [PATCH 122/391] Fix e2e test --- .github/workflows/test_svelte_frontend.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index fa595a19..035d8c67 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -95,6 +95,7 @@ jobs: key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} - name: Install Python dependencies + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | poetry install @@ -117,11 +118,12 @@ jobs: - name: Install playwright browsers working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run playwright install + playwright install - name: Run e2e tests + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | - poetry run pytest ${{ env.SUBDIRECTORY }}/test_frontend/test_e2e.py + poetry run pytest ../${{ env.SUBDIRECTORY }}/test_frontend/test_e2e.py test_integration: @@ -178,7 +180,7 @@ jobs: - name: Install playwright browsers working-directory: ${{ env.SUBDIRECTORY }} run: | - poetry run playwright install + playwright install - name: Run integration tests working-directory: ${{ env.BACKEND_SUBDIRECTORY }} From 5163de101e903e04d264e20f8a13ff217c2fb107 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:10:52 +0200 Subject: [PATCH 123/391] Suppress IndexError --- python_examples/main.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python_examples/main.py b/python_examples/main.py index 9dfce46f..71e4d2ff 100644 --- a/python_examples/main.py +++ b/python_examples/main.py @@ -1,7 +1,9 @@ import sys +from contextlib import suppress from pathlib import Path -sys.path.append(str(Path(__file__).parents[1])) +with suppress(IndexError): + sys.path.append(str(Path(__file__).parents[1])) import asyncio import time From ae502a6fcda1c1071ece029396e93d6e0d616f8d Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:12:22 +0200 Subject: [PATCH 124/391] Fix playwright install --- .github/workflows/test_svelte_frontend.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index 035d8c67..d1962b0b 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -99,6 +99,11 @@ jobs: run: | poetry install + - name: Install playwright browsers + working-directory: ${{ env.SUBDIRECTORY }} + run: | + poetry run playwright install + - name: Set up Node ${{ matrix.node }} uses: actions/setup-node@v3 with: @@ -115,11 +120,6 @@ jobs: run: | npm install - - name: Install playwright browsers - working-directory: ${{ env.SUBDIRECTORY }} - run: | - playwright install - - name: Run e2e tests working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | @@ -161,6 +161,11 @@ jobs: run: | poetry install + - name: Install playwright browsers + working-directory: ${{ env.SUBDIRECTORY }} + run: | + poetry run playwright install + - name: Set up Node ${{ matrix.node }} uses: actions/setup-node@v3 with: @@ -177,11 +182,6 @@ jobs: run: | npm install - - name: Install playwright browsers - working-directory: ${{ env.SUBDIRECTORY }} - run: | - playwright install - - name: Run integration tests working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | From a751b5bc1d98d5af52cd804cd4b331f61edbe43e Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:14:55 +0200 Subject: [PATCH 125/391] Fix location for 'playwright install' --- .github/workflows/test_svelte_frontend.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_svelte_frontend.yml b/.github/workflows/test_svelte_frontend.yml index d1962b0b..4cb71df8 100644 --- a/.github/workflows/test_svelte_frontend.yml +++ b/.github/workflows/test_svelte_frontend.yml @@ -100,7 +100,7 @@ jobs: poetry install - name: Install playwright browsers - working-directory: ${{ env.SUBDIRECTORY }} + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | poetry run playwright install @@ -162,7 +162,7 @@ jobs: poetry install - name: Install playwright browsers - working-directory: ${{ env.SUBDIRECTORY }} + working-directory: ${{ env.BACKEND_SUBDIRECTORY }} run: | poetry run playwright install From c2025ae1e79ce13f8d52b930952cee010ba79d7b Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:21:23 +0200 Subject: [PATCH 126/391] Add npm --- .github/workflows/check_python_code.yml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index d0e13c39..2289b369 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -1,16 +1,7 @@ -name: check_python_code +name: run_xonsh_script -on: - push: - paths: - - ./**/*.py - - .github/workflows/check_python_code.yml - - run_tests.xsh - pull_request: - branches: - - master - - develop +on: [push, pull_request] env: SUBDIRECTORY: check-python-code @@ -22,6 +13,7 @@ jobs: matrix: os: [ubuntu-latest] python-version: ['3.8', '3.9', '3.10'] + node: ['16', '18'] runs-on: ${{ matrix.os }} steps: @@ -32,6 +24,11 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Set up Node ${{ matrix.node }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node }} + - name: Install poetry and xonsh run: | pip install poetry xonsh[full] @@ -45,6 +42,12 @@ jobs: path: .venv key: ${{ matrix.os }}-$(python --version)-poetry-${{ env.SUBDIRECTORY }}-${{ hashFiles('poetry.lock') }} + - name: Cache npm + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ matrix.os }}-${{ matrix.node }}-${{ env.SUBDIRECTORY }}-node-${{ hashFiles('**/package-lock.json') }} + - name: Install Python dependencies run: | poetry install From 71c0511016efb9723bc0d0724cecef850f250c9e Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:24:18 +0200 Subject: [PATCH 127/391] Disable python 3.8 --- .github/workflows/python_examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python_examples.yml b/.github/workflows/python_examples.yml index 46796df4..2fec9d5f 100644 --- a/.github/workflows/python_examples.yml +++ b/.github/workflows/python_examples.yml @@ -21,7 +21,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ['3.8', '3.9', '3.10'] + python-version: ['3.9', '3.10'] include: - os: macos-latest python-version: '3.10' From 6dee71b479d1e58aa5851566a4e632d2795f636b Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:28:59 +0200 Subject: [PATCH 128/391] Turn off verbosity --- .github/workflows/check_python_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 2289b369..45d31917 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -54,4 +54,4 @@ jobs: - name: Format, lint and test run: | - poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all --verbose + poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all From 8c01225f63304e7cb80b9b7dfcd771abc9b5c638 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:33:45 +0200 Subject: [PATCH 129/391] Fix playwright install --- .github/workflows/check_python_code.yml | 2 +- run_tests.xsh | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 45d31917..1aa5875a 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -7,7 +7,7 @@ env: SUBDIRECTORY: check-python-code jobs: - check_python_code: + run_xonsh_script: strategy: fail-fast: false matrix: diff --git a/run_tests.xsh b/run_tests.xsh index 13f43bf0..31b0c494 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -132,9 +132,8 @@ def run( files_related_to_project = project_has_changed_files("bored_gems", changed_only=run_only_changed_files) if files_related_to_project: cd bored_gems - npm install 1>/dev/null 2>/dev/null - npx playwright install 1>/dev/null 2>/dev/null - playwright install 1>/dev/null 2>/dev/null + run_command("npm install".split(), verbose=verbose) + run_command("npx playwright install".split(), verbose=verbose) if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -147,7 +146,7 @@ def run( files_related_to_project = project_has_changed_files("replay_comparer", changed_only=run_only_changed_files) if files_related_to_project: cd replay_comparer - npm install 1>/dev/null 2>/dev/null + run_command("npm install".split(), verbose=verbose) if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -160,7 +159,7 @@ def run( files_related_to_project = project_has_changed_files("supabase_stream_scripts", changed_only=run_only_changed_files) if files_related_to_project: cd supabase_stream_scripts - npm install 1>/dev/null 2>/dev/null + run_command("npm install".split(), verbose=verbose) if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -173,9 +172,7 @@ def run( files_related_to_project = project_has_changed_files("svelte_frontend", changed_only=run_only_changed_files) if files_related_to_project: cd svelte_frontend - npm install 1>/dev/null 2>/dev/null - npx playwright install 1>/dev/null 2>/dev/null - playwright install 1>/dev/null 2>/dev/null + run_command("npm install".split(), verbose=verbose) if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) @@ -186,7 +183,9 @@ def run( if run_npm_test: cd fastapi_server poetry install 1>/dev/null 2>/dev/null + poetry run playwright install run_command("poetry run python -m pytest ../svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split(), verbose=verbose) + run_command("poetry run python -m pytest ../svelte_frontend/test_frontend/test_integration.py --benchmark-skip".split(), verbose=verbose) cd .. From 17f1fb011062d6d39d3e23c9fd5ed58accec764c Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:41:17 +0200 Subject: [PATCH 130/391] Only run autoformat and lint on CI full check --- .github/workflows/check_python_code.yml | 2 +- run_tests.xsh | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index 1aa5875a..e8c13cc0 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -54,4 +54,4 @@ jobs: - name: Format, lint and test run: | - poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all + xonsh run_tests.xsh run --pylint --npmlint --all diff --git a/run_tests.xsh b/run_tests.xsh index 31b0c494..3b1d7dfc 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -1,10 +1,12 @@ #!/usr/bin/env xonsh # In CI: -# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all --verbose +# xonsh run_tests.xsh run --pylint --npmlint --all --verbose # For dev (only changed files): -# poetry run xonsh run_tests.xsh run --pylint --npmlint +# xonsh run_tests.xsh run --pylint --npmlint # For dev (slower): -# poetry run xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest +# xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest +# For dev (slowest, run all tests): +# xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all --verbose from typing import List from xonsh.procs.pipelines import CommandPipeline from xonsh.tools import print_color @@ -133,11 +135,11 @@ def run( if files_related_to_project: cd bored_gems run_command("npm install".split(), verbose=verbose) - run_command("npx playwright install".split(), verbose=verbose) if run_npm_lint: run_command("npm run format".split(), verbose=verbose) run_command("npm run lint".split(), verbose=verbose) if run_npm_test: + run_command("npx playwright install".split(), verbose=verbose) run_command("npm run build".split(), verbose=verbose) run_command("npm run test".split(), verbose=verbose) cd .. From c5fb26dc87067d78417320cd92379794488b26d4 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:46:35 +0200 Subject: [PATCH 131/391] Run all commands inside 'run_command' --- .github/workflows/check_python_code.yml | 2 +- run_tests.xsh | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check_python_code.yml b/.github/workflows/check_python_code.yml index e8c13cc0..1a24b284 100644 --- a/.github/workflows/check_python_code.yml +++ b/.github/workflows/check_python_code.yml @@ -54,4 +54,4 @@ jobs: - name: Format, lint and test run: | - xonsh run_tests.xsh run --pylint --npmlint --all + xonsh run_tests.xsh run --pylint --pytest --npmlint --npmtest --all diff --git a/run_tests.xsh b/run_tests.xsh index 3b1d7dfc..2b6c2366 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -92,7 +92,7 @@ def run( run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on discord_bot") if run_python_test: cd discord_bot - poetry install 1>/dev/null 2>/dev/null + run_command("poetry install".split(), verbose=verbose) run_command("poetry run python -m pytest".split(), verbose=verbose) run_command("docker build --tag precommit_image_discord_bot .".split(), verbose=verbose) cd .. @@ -106,13 +106,13 @@ def run( run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on fastapi_server") if run_python_test: cd fastapi_server - poetry install 1>/dev/null 2>/dev/null + run_command("poetry install".split(), verbose=verbose) run_command("poetry run python -m pytest".split(), verbose=verbose) run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose) # Check if the server can start at all - docker build --tag burnysc2/fastapi_server:latest . 1>/dev/null 2>/dev/null + run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), ignore_exit_status=True, verbose=verbose) # Run fastapi server for 5 seconds, expect exitcode 124 if timeout was reached and didn't crash before - returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True) + returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, verbose=verbose) if returncode == 124: ANY_COMMAND_HAS_ERROR = True cd .. @@ -126,7 +126,7 @@ def run( run_command("poetry run pylint".split() + files_related_to_project_py, verbose=verbose, display_name="Run pylint on python_examples") if run_python_test: cd python_examples - poetry install 1>/dev/null 2>/dev/null + run_command("poetry install".split(), verbose=verbose) run_command("poetry run python -m pytest".split(), verbose=verbose) cd .. @@ -184,8 +184,8 @@ def run( cd .. if run_npm_test: cd fastapi_server - poetry install 1>/dev/null 2>/dev/null - poetry run playwright install + run_command("poetry install".split(), verbose=verbose) + run_command("poetry run playwright install".split(), verbose=verbose) run_command("poetry run python -m pytest ../svelte_frontend/test_frontend/test_e2e.py --benchmark-skip".split(), verbose=verbose) run_command("poetry run python -m pytest ../svelte_frontend/test_frontend/test_integration.py --benchmark-skip".split(), verbose=verbose) cd .. From 682e208cac55985de461582b5711cc8fc04e9813 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 02:54:30 +0200 Subject: [PATCH 132/391] Improve message replacement --- run_tests.xsh | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/run_tests.xsh b/run_tests.xsh index 2b6c2366..49bff0d0 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -26,8 +26,9 @@ def project_has_changed_files(project_name: str, changed_only=True, file_ending: if file_name.endswith(file_ending) ] -def remove_last_message(message: str) -> None: - print(" " * len(message), end="\r") +def replace_last_message(old_message: str, new_message: str) -> None: + length_difference = max(0, len(new_message) - len(old_message)) + print_color(new_message + " " * length_difference) def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name='') -> int: global ANY_COMMAND_HAS_ERROR @@ -35,8 +36,8 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis location = $(pwd).strip() command_as_line = " ".join(command) print_command = display_name if display_name else f"{location} - {command_as_line}" - message = f"\r{{YELLOW}}RUNNING{{RESET}} - {print_command}" - print_color(message, end='\r') + last_message = f"\r{{YELLOW}}RUNNING{{RESET}} - {print_command}" + print_color(last_message, end='\r') if verbose: ret: CommandPipeline = !(@(command)) else: @@ -45,11 +46,9 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis time.sleep(0.01) time_required: float = time.perf_counter() - start_time if ignore_exit_status or ret.returncode == 0: - remove_last_message(message) - print_color(f"{time_required:.3f} {{GREEN}}SUCCESS{{RESET}} - {print_command}") + replace_last_message(last_message, f"{time_required:.3f} {{GREEN}}SUCCESS{{RESET}} - {print_command}") else: - remove_last_message(message) - print_color(f"{time_required:.3f} {{RED}}FAILURE{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") + replace_last_message(last_message, f"{time_required:.3f} {{RED}}FAILURE{{RESET}} - {print_command} - Exited with exit code {ret.returncode}") print_color(f"{{RED}}FAILURE{{RESET}} Command executed in {location}:\n{command_as_line}") if verbose: print(f"STDOUT:\n{ret.out}\n") @@ -108,9 +107,8 @@ def run( cd fastapi_server run_command("poetry install".split(), verbose=verbose) run_command("poetry run python -m pytest".split(), verbose=verbose) - run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose) # Check if the server can start at all - run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), ignore_exit_status=True, verbose=verbose) + run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose) # Run fastapi server for 5 seconds, expect exitcode 124 if timeout was reached and didn't crash before returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, verbose=verbose) if returncode == 124: From ae67152133838842127cc8c60698469b5a698bf5 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 03:14:40 +0200 Subject: [PATCH 133/391] Fix import to fix tests --- burny_common/integration_test_helper.py | 2 +- fastapi_server/main.py | 7 +++++++ run_tests.xsh | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/burny_common/integration_test_helper.py b/burny_common/integration_test_helper.py index 3675f93f..be8567e6 100644 --- a/burny_common/integration_test_helper.py +++ b/burny_common/integration_test_helper.py @@ -138,7 +138,7 @@ def start_fastapi_dev_server( # assert is_port_free(port), f"Unable to start fastapi server because port {port} is blocked" logger.info(f'Starting backend on port {port}') _ = subprocess.Popen( - ['poetry', 'run', 'uvicorn', 'fastapi_server.main:app', '--host', 'localhost', '--port', f'{port}'], + ['uvicorn', 'fastapi_server.main:app', '--host', 'localhost', '--port', f'{port}'], cwd=root_folder, env=env, ) diff --git a/fastapi_server/main.py b/fastapi_server/main.py index 38439f18..fcdfa3d5 100644 --- a/fastapi_server/main.py +++ b/fastapi_server/main.py @@ -1,3 +1,10 @@ +import sys +from contextlib import suppress +from pathlib import Path + +with suppress(IndexError): + sys.path.append(str(Path(__file__).parents[1])) + import os from typing import Literal diff --git a/run_tests.xsh b/run_tests.xsh index 49bff0d0..8c9b42d8 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -27,7 +27,7 @@ def project_has_changed_files(project_name: str, changed_only=True, file_ending: ] def replace_last_message(old_message: str, new_message: str) -> None: - length_difference = max(0, len(new_message) - len(old_message)) + length_difference = max(0, len(old_message) - len(new_message)) print_color(new_message + " " * length_difference) def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name='') -> int: @@ -193,6 +193,6 @@ if __name__ == '__main__': parser = xcli.make_parser("test commands") parser.add_command(run) xcli.dispatch(parser) - if ANY_COMMAND_HAS_ERROR: - sys.exit(1) - sys.exit(0) + # if ANY_COMMAND_HAS_ERROR: + # exit 1 + # exit 0 From a709a3b4034b8c7da76b67d8e15438238f627c9b Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 09:46:05 +0200 Subject: [PATCH 134/391] Print list of errors if there were any --- run_tests.xsh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/run_tests.xsh b/run_tests.xsh index 8c9b42d8..8520ffbf 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -18,6 +18,7 @@ changed_files: List[str] = $(git diff HEAD --name-only).splitlines() python_files: List[str] = $(git ls-files '*.py').splitlines() files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() ANY_COMMAND_HAS_ERROR = False +SCRIPTS_WITH_ERRORS = [] def project_has_changed_files(project_name: str, changed_only=True, file_ending: str="") -> List[str]: iterable_files = changed_files if changed_only else files_in_project(project_name) @@ -58,6 +59,7 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis @(command) if ret.returncode != 0: ANY_COMMAND_HAS_ERROR = True + SCRIPTS_WITH_ERRORS.append((location, command_as_line)) return ret.returncode def run( @@ -111,7 +113,7 @@ def run( run_command("docker build --tag burnysc2/fastapi_server:latest .".split(), verbose=verbose) # Run fastapi server for 5 seconds, expect exitcode 124 if timeout was reached and didn't crash before returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, verbose=verbose) - if returncode == 124: + if returncode != 124: ANY_COMMAND_HAS_ERROR = True cd .. @@ -193,6 +195,8 @@ if __name__ == '__main__': parser = xcli.make_parser("test commands") parser.add_command(run) xcli.dispatch(parser) - # if ANY_COMMAND_HAS_ERROR: - # exit 1 - # exit 0 + if ANY_COMMAND_HAS_ERROR: + print(f"Certain commands yielded errors:") + print('\n'.join(SCRIPTS_WITH_ERRORS)) + sys.exit(1) + sys.exit(0) From ad332205a88311ccebe0d843adba39c6d4d62f82 Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 09:56:48 +0200 Subject: [PATCH 135/391] Replace ANY_COMMAND_HAS_ERROR with a list of errors instead --- .../delete_duplicates_based_on_file_size.xsh | 12 ++++++++++++ run_tests.xsh | 12 ++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 python_examples/templates/delete_duplicates_based_on_file_size.xsh diff --git a/python_examples/templates/delete_duplicates_based_on_file_size.xsh b/python_examples/templates/delete_duplicates_based_on_file_size.xsh new file mode 100644 index 00000000..11f95dbf --- /dev/null +++ b/python_examples/templates/delete_duplicates_based_on_file_size.xsh @@ -0,0 +1,12 @@ +import os +from pathlib import Path +from typing import Set + +file: Path +size_already_exists: Set[int] = set() +for file in pg`./**.*`: + size = file.stat().st_size + if file.is_file() and size in size_already_exists: + print(f"Removing file '{file}'") + os.remove(file) + size_already_exists.add(size) diff --git a/run_tests.xsh b/run_tests.xsh index 8520ffbf..1d139c2e 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -17,7 +17,6 @@ import sys changed_files: List[str] = $(git diff HEAD --name-only).splitlines() python_files: List[str] = $(git ls-files '*.py').splitlines() files_in_project = lambda project_name: $(git ls-files @(project_name)).splitlines() -ANY_COMMAND_HAS_ERROR = False SCRIPTS_WITH_ERRORS = [] def project_has_changed_files(project_name: str, changed_only=True, file_ending: str="") -> List[str]: @@ -32,7 +31,6 @@ def replace_last_message(old_message: str, new_message: str) -> None: print_color(new_message + " " * length_difference) def run_command(command: List[str], ignore_exit_status=False, verbose=False, display_name='') -> int: - global ANY_COMMAND_HAS_ERROR start_time = time.perf_counter() location = $(pwd).strip() command_as_line = " ".join(command) @@ -57,8 +55,7 @@ def run_command(command: List[str], ignore_exit_status=False, verbose=False, dis else: # Run command again in verbose mode @(command) - if ret.returncode != 0: - ANY_COMMAND_HAS_ERROR = True + if not ignore_exit_status and ret.returncode != 0: SCRIPTS_WITH_ERRORS.append((location, command_as_line)) return ret.returncode @@ -70,7 +67,6 @@ def run( run_only_changed_files: xcli.Arg('--all', '-a', action="store_false") = True, verbose: xcli.Arg('--verbose', '-v', action="store_true") = False, ): - global ANY_COMMAND_HAS_ERROR if run_python_lint: # Run mypy on all python files because types could have changed which can affect other files command = "poetry run mypy".split() + python_files @@ -114,7 +110,7 @@ def run( # Run fastapi server for 5 seconds, expect exitcode 124 if timeout was reached and didn't crash before returncode = run_command("timeout 5 sh run.sh".split(), ignore_exit_status=True, verbose=verbose) if returncode != 124: - ANY_COMMAND_HAS_ERROR = True + SCRIPTS_WITH_ERRORS.append(("fastapi_server", "timeout 5 sh sh.run")) cd .. # python_examples @@ -195,8 +191,8 @@ if __name__ == '__main__': parser = xcli.make_parser("test commands") parser.add_command(run) xcli.dispatch(parser) - if ANY_COMMAND_HAS_ERROR: - print(f"Certain commands yielded errors:") + if SCRIPTS_WITH_ERRORS: + print(f"The following commands threw errors:") print('\n'.join(SCRIPTS_WITH_ERRORS)) sys.exit(1) sys.exit(0) From 73dd926d752aa318027a422730d5b36c06637e4e Mon Sep 17 00:00:00 2001 From: burny Date: Sun, 19 Jun 2022 10:00:17 +0200 Subject: [PATCH 136/391] Convert to string before joining --- run_tests.xsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_tests.xsh b/run_tests.xsh index 1d139c2e..d2bfb4e4 100644 --- a/run_tests.xsh +++ b/run_tests.xsh @@ -193,6 +193,6 @@ if __name__ == '__main__': xcli.dispatch(parser) if SCRIPTS_WITH_ERRORS: print(f"The following commands threw errors:") - print('\n'.join(SCRIPTS_WITH_ERRORS)) + print('\n'.join(str(SCRIPTS_WITH_ERRORS))) sys.exit(1) sys.exit(0) From dcff0b7d4ffd486d87df7b98ee1365ac43f9baeb Mon Sep 17 00:00:00 2001 From: burny Date: Mon, 20 Jun 2022 23:41:41 +0200 Subject: [PATCH 137/391] Add discord bot readme --- discord_bot/README.md | 42 +++++++++++ poetry.lock | 14 +++- pyproject.toml | 1 + .../examples/async_await/local_file_access.py | 74 +++++++++++++++++++ python_examples/main.py | 3 + python_examples/poetry.lock | 14 +++- python_examples/pyproject.toml | 1 + 7 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 discord_bot/README.md create mode 100644 python_examples/examples/async_await/local_file_access.py diff --git a/discord_bot/README.md b/discord_bot/README.md new file mode 100644 index 00000000..cc4f1ac7 --- /dev/null +++ b/discord_bot/README.md @@ -0,0 +1,42 @@ +# Python Discord Sc2 Bot + +### Installation +- Install python 3.8 or newer (32 or 64 bit) +- Run commands + ``` + pip install poetry --user + poetry install + ``` +- Required private file: DISCORDKEY, SUPABASEKEY, SUPABASEURL (the error messages should display if certain keys are missing) + +### Running + +Run the bot with command + +`poetry run python main.py` + +or inside docker via + +`sh run.sh` + +### Commands +**Public commands:** +```markdown +# Uses nephest.com to grab mmr of the player +!mmr + +# Remind the user in a certain time in the same channel of a text message +!reminder + +# Remind the user at a certain time in the same channel of a text message +!remindat